主库:
1.安装docker
2.
docker pull mysql
3.
mkdir /opt
4.
cd /opt
5.
vim my.cnf
6.
[mysqld] [数据库唯一ID,主从的标识号绝对不能重复] server-id = 1 [开启bin-log,并指定文件目录和文件名前缀] log-bin=mysql-bin [需要同步liting数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)] binlog-do-db=liting [不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开] binlog-ignore-db=mysql [确保binlog日志写入后与硬盘同步] sync_binlog = 1 [跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none] binlog_checksum = crc32 [bin-log日志文件格式,设置为MIXED可以防止主键重复] binlog_format = mixed secure_file_priv=/var/lib/mysql default_authentication_plugin=mysql_native_password
7.
docker run --name mysql -v /opt/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:latest
8.登陆mysql创建用户:
create user 'repl'@'%' identified by '123456'; grant replication slave on . to 'repl'@'%'; flush privileges;
9.查看主库当前状态:
show master status. 获取 日志文件名 和 偏移位置
从库:
1.安装docker
2.
docker pull mysql
3.
mkdir /opt
4.
cd /opt
5.
vim my.cnf
6.
[mysqld] [设置从服务器id,必须于主服务器不同] server-id = 5 [启动MySQ二进制日志系统] log-bin=mysql-bin [需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)] replicate-do-db = mysql [不同步mysql数据库] replicate-ignore-db=mysql [跳过所有的错误,继续执行复制操作] slave-skip-errors = all 日志记录的格式 binlog_format=mixed secure_file_priv=/var/lib/mysql default_authentication_plugin=mysql_native_password
7.
docker run --name mysql -v /opt/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:latest
8.
docker exec -it mysql容器id /bin/bash; mysql -uroot -p; 直接回车登入;
9.
change master to master_host='主机ip', master_user='repl', master_password='123456', master_log_file='上面获取的日志名', master_log_pos=上面获取的偏移位置
10.
start slave;
11.
show slave status \G;
12.
Salve_IO_Running:yes;Slave_SQL_Running:yes;表示成功
13.在主库上面操作,从库可以看到数据。
14.创建用户:
create user 'slave'@'%' identified by '123456'; grant select on . to 'slave'@'%'; flush privileges;