Mysql 数据库主从同步
上机练习
1 容器生成命令
压缩包获取镜像
docker image load -i /root/mysql.tar
创建并开启两个镜像:
docker run --name mysql1 -d -p 3333:3306 \
-v /opt/mysql1/conf:/etc/mysql/conf.d/ \
-v /opt/mysql1/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
docker run --name mysql2 -d -p 3334:3306 \
-v /opt/mysql2/conf:/etc/mysql/conf.d/ \
-v /opt/mysql2/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
2 主服务器配置
配置第一个服务器
cd /opt/mysql1
添加并编辑配置文件:
vim my.cnf 输入以下内容:
#修改主服务配置文件:vim /etc/my.cnf
[mysqld]
#主服务器唯一 ID
server_id=1
#启用二进制日志
log-bin=mysql-bin
#上面两行最重要,下面的可以不配置# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库 需要复制的主数据库名字
binlog-do-db=test
#设置 logbin 格式 Row、Statement、Mixed
binlog_format=STATEMENT
# Disabling symbolic-links is recommended to prevent assorted security
risks 关闭配置外存储
symbolic-links=0
3 从服务器配置
跟上面类似的操作:
cd /opt/mysql2
cd conf/
vim my.cnf
输入以下内容:
# 修改从服务配置文件: vim /etc/my.cnf
# 主服务器唯一 ID
[mysqld]
server-id = 2
# 启用二进制日志
relay-log = relay-bin
log-bin = mysql-bin# 上面两行最重要,下面的可以不配置 # 设置不要复制的数
据库 ( 可设置多个 )
# read_only=1
# 从服务器只读
slave-skip-errors = 1032,1062,1007,1050
4 验证
重启两台服务器: docker restart mysql1
docker restart mysql2
进入 主服务器 配置
进入容器
docker exec -it mysql1 bash
进入 mysql
mysql -uroot -proot
create user 'worker'@'%' identified by 'root';
grant replication slave,replication client on *.* to 'worker'@'%';
退出后进入 mysql2
docker exec -it mysql2 bash
mysql -uroot -proot
输入:
CHANGE MASTER TO MASTER_HOST='172.17.0.2',
MASTER_USER='worker',
MASTER_PASSWORD='root',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;
重启
start slave;
验证:
show slave status \G;