Docker下完成主从复制

本文详细介绍了如何使用Docker部署MySQL主从复制环境,包括拉取镜像、创建容器、配置my.cnf、创建用户、设置主从参数及解决常见问题。在配置过程中,强调了flush privileges的重要性,并分享了遇到的错误和解决经验。
摘要由CSDN通过智能技术生成

1.使用docker拉取Mysql镜像

2.创建两个Mysql容器(master和slave)

docker run --name mysql-master -d 
-p 3307:3306 
-e MYSQL_ROOT_PASSWORD=admin123456 
-v /root/mysql/slave/data:/var/lib/mysql 
-v /root/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf 
-v /root/mysql/slave/test/mysql_master_slave/slave/mysql-files:/var/lib/mysql-files 
mysql
docker run --name mysql-slave 
-d -p 3308:3306 
-e MYSQL_ROOT_PASSWORD=admin123456 
-v /root/mysql/slave/data:/var/lib/mysql 
-v /root/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf 
-v /root/mysql/slave/test/mysql_master_slave/slave/mysql-files:/var/lib/mysql-files 
mysql

3.修改my.cnf的配置(master和slave)

[mysqld]
server_id = 101
log-bin= mysql-master-bin
read-only=0
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
[mysqld]
server_id = 102
log-bin= mysql-slave-bin
read-only=0
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

4.进入主的mysql,完成从的用户创建

CREATE USER 'slave'@'%' IDENTIFIED BY '你自己的密码';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;

这个flush privileges;很重要,我自己就是忘记了然后出错,卡了我很久。

flush privileges作用:mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问

4.在主库,查看master的相关参数

mysql> show master status;
+-------------------------+----------+--------------+------------------+-------------------+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------------+----------+--------------+------------------+-------------------+
| mysql-master-bin.000002 |     4405 |              |                  |                   |
+-------------------------+----------+--------------+------------------+-------------------+

4.需要查看docker中主库容器的地址

[root@rocketmqOS conf]# docker inspect mysql-master | grep IPA
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.2",

5.进入从机的mysql中,完成slave的配置。

change master to
master_host='172.17.0.2',master_user='slave',
master_password='admin123456',master_port=3306,
master_log_file='mysql-master-bin.000002',
master_log_pos=4405,master_connect_retry=30;
start slave;
show slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
#如果这两个yes出现,就意味着安装成功

踩雷:

虽然感觉步骤很简单,但是我在里面踩了很多很多坑,比如说安装好了mysql之后登录不进去,Slave_IO_Running: Connecting  Slave_SQL_Running:No,Nivacate没法远程连接,可以照着网上好好查一下,慢慢解决,下次再遇到之后就把这些错误记录下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值