创建挂载目录和配置文件
mkdir -p /mysql_master_1/mysql/log
mkdir -p /mysql_master_1/mysql/data
mkdir -p /mysql_master_1/mysql/conf
vim /mysql_master_1/mysql/conf/my.cnf
[ mysqld]
datadir = /var/lib/mysql
server_id = 1
log-bin= mysql-bin
binlog_do_db = testdb
auto-increment-offset= 1
auto-increment-increment= 2
mkdir -p /mysql_master_2/mysql/log
mkdir -p /mysql_master_2/mysql/data
mkdir -p /mysql_master_2/mysql/conf
vim /mysql_master_2/mysql/conf/my.cnf
[ mysqld]
datadir = /var/lib/mysql
server_id = 2
log-bin= mysql-bin
binlog_do_db = testdb
auto-increment-offset= 2
auto-increment-increment= 2
Mysql 容器启动
docker pull mysql:5.7
docker run -p 33061 :3306 --name mysql_master_1 \
-v /mysql_master_1/mysql/log:/var/log/mysql \
-v /mysql_master_1/mysql/data:/var/lib/mysql \
-v /mysql_master_1/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
--restart = always \
-e MYSQL_ROOT_PASSWORD = 123456 \
-d mysql:5.7
docker run -p 33062 :3306 --name mysql_master_2 \
-v /mysql_master_2/mysql/log:/var/log/mysql \
-v /mysql_master_2/mysql/data:/var/lib/mysql \
-v /mysql_master_2/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
--restart = always \
-e MYSQL_ROOT_PASSWORD = 123456 \
-d mysql:5.7
Mysql主主复制设置
主节点1设置同步账号
docker exec -it mysql_master_1 /bin/bash
mysql -uroot -p123456
GRANT REPLICATION SLAVE ON *.* TO 'slave' @'%' IDENTIFIED BY '123456' ;
flush privileges;
SELECT DISTINCT CONCAT( 'User: ' '',user,' ''@' '',host,' '';' ) AS query FROM mysql.user;
查询master的状态,记录File、Position的值,File表示当前日志文件名称,Position表示当前日志的位置,用于主节点2日志同步
show master status;
主节点2设置同步账号
docker exec -it mysql_master_2 /bin/bash
mysql -uroot -p123456
GRANT REPLICATION SLAVE ON *.* TO 'slave' @'%' IDENTIFIED BY '123456' ;
flush privileges;
SELECT DISTINCT CONCAT( 'User: ' '',user,' ''@' '',host,' '';' ) AS query FROM mysql.user;
查询master的状态,记录File、Position的值,File表示当前日志文件名称,Position表示当前日志的位置,用于主节点1日志同步
show master status;
主节点1配置数据同步
docker exec -it mysql_master_1 /bin/bash
mysql -uroot -p123456
设置主节点1连接,master_host为主节点2容器IP(docker inspect mysql_master_2查看ip),master_user为主备账号,master_password为主备账号密码,master_log_file和master_log_pos为主节点2容器中,通过show master status查出来的值;
change master to master_host = '172.18.0.3' ,master_port= 3306 ,master_user= 'slave' ,master_password= '123456' ,master_log_file= 'mysql-bin.000003' ,master_log_pos= 600 ;
start slave;
show slave status\ G;
主节点2配置数据同步
docker exec -it mysql_master_2 /bin/bash
mysql -uroot -p123456
设置主节点2连接,master_host为主节点1容器IP(docker inspect mysql_master_1查看ip),master_user为主备账号,master_password为主备账号密码,master_log_file和master_log_pos为主节点1容器中,通过show master status查出来的值;
change master to master_host = '172.18.0.2' ,master_port= 3306 ,master_user= 'slave' ,master_password= '123456' ,master_log_file= 'mysql-bin.000003' ,master_log_pos= 600 ;
start slave;
show slave status\ G;