mysql配置主从复制笔记
搭建环境
docker
+mysql 5.7
模拟双机热备
搭建主库
docker run -d -p 13306:3306 -v /DockerProject/mysql/master/conf:/etc/mysql/conf.d --name mysql-master -e MYSQL_ROOT_PASSWORD=root mysql:5.7
搭建从库
docker run -d -p 13307:3306 -v /DockerProject/mysql/master/conf:/etc/mysql/conf.d --name mysql-slave -e MYSQL_ROOT_PASSWORD=root mysql:5.7
复制配置文件
# 复制到主库配置挂载目录 docker cp mysql-master:/etc/my.cnf /DockerProject/mysql/master/conf # 复制到从库配置挂载目录 docker cp mysql-slave:/etc/my.cnf /DockerProject/mysql/slave/conf
如果发现没有加载自定义配置时,可能是my.cnf给的权限太高了(world-writable),需要将权限改动一下:
# 进入容器执行 chmod 644 /etc/mysql/conf.d/my.cnf
配置主库
编辑配置文件
/DockerProject/mysql/master/conf/my.cnf
[mysqld] # 新增以下配置 log-bin=mysql-bin # 存储二进制快照的文件名 server-id=1 # 在集群中唯一 expire_logs_days=10 # 快照过期时间(天) # binlog_do_db = db1 # 指定需要同步的数据库名 # binlog_ignore_db = mysql # 忽略同步的数据库名
新建一个用于执行复制的mysql用户
CREATE USER 'slave_replication'@'%' IDENTIFIED BY '123456'; GRANT FILE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave_replication'@'%';
重启mysql,查看binlog是否开启
-- 查看变量 show variables like '%log_bin%'; -- 查看快照文件名和pos show master status;
配置从库
编辑配置文件
/DockerProject/mysql/slave/conf/my.cnf
[mysqld] # 新增以下配置 server-id=2 relay-log=relaylog # 开启中继日志,将主库的binlog保存在自己的中继日志中。 #GTID_MODE=ON#开启GTID模式
配置主库参数
相关语法:https://dev.mysql.com/doc/refman/5.7/en/change-master-to.html
-- 从库数据库服务器要用内网ip,不要用回环ip127.0.0.1,否者从库会连接不了主库。 -- master_log_pos和master_log_file在主库执行show master status可以看到,如果是5.7可以使用MASTER_AUTO_POSITION=1自动定位。 change MASTER TO master_host='192.168.1.50',master_port=13306, master_log_pos=154,master_log_file='mysql-bin.000003',master_user='root', master_password='root';
重启mysql,查看slave状态
-- Slave_IO_Running和Slave_SQL_Running为Yes即为启动成功 show slave status; -- 启动slave -- start slave; -- 关闭slave --- stop slave;
mysql配置主从复制笔记
http://blog.icy8.cn/posts/39374/