使用Docker部署Mysql并实现主从复制

Mysql主从复制

1.先建立数据存放目录(/data/)
--mysql-master
	--data
	--conf
	--my.cnf
--mysql-slave
	--data
	--conf
	--my.cnf
2. 准备好 Mysql Master(主库)和Mysql Slave(从库)的my.cnf文件

Master my.cnf 配置文件:

[mysqld]
server_id = 1	#标识服务实例
log-bin= mysql-bin	
read-only=0		#0表示支持可读写、1的话表明仅支持可读
#忽略的数据库,除了这些其他都会进行同步
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

Slave my.cnf 配置文件:

[mysqld]
server_id = 2	#标识服务实例
log-bin= mysql-bin
read-only=1	#0表示支持可读写、1的话表明仅支持可读
#忽略的数据库,除了这些其他都会进行同步
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
3. 创建master主容器
docker run --name mysql-master -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root 
-v /data/mysql-master/data:/var/lib/mysql 
-v /data/mysql-master/my.cnf:/etc/mysql/my.cnf 
mysql:5.7
4. 创建slave从容器
docker run --name mysql-slave -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root 
-v /data/mysql-slave/data:/var/lib/mysql 
-v /data/mysql-slave/my.cnf:/etc/mysql/my.cnf 
mysql:5.7
5. master容器设置
#进入master容器
docker exec -it mysql-master bash
#启动mysql命令,刚在创建窗口时我们把密码设置为:
rootmysql -u root -p

创建一个用户来同步数据,每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE 权限。

CREATE USER 'slave'@ '%' IDENTIFIED BY '123456';  --(其实可省略)
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';
-- 这里表示创建一个slaver同步账号slave,允许访问的IP地址为%,%表示通配符
-- 查看状态,记住File、Position的值,在Slave中将用到
show master status;
6. salve容器设置
#进入slaver容器
docker exec -it mysql-slave bash
#启动mysql命令,刚在创建窗口时我们把密码设置为:root
mysql -u root -p
-- 设置主库链接
change master to master_host='172.17.0.2',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3306;
-- 启动从库同步
start slave;
-- 查看状态
show slave status\G;

master_host为主机的ip,可通过docker inspect mysql-master查看NetworkSettings–>IPAddress

master_log_file对应show master status查询结果中的File

master_log_pos对应show master status查询结果中的Position,如果不设置则默认从master日志中的第一行开始同步。

master_portmaster暴露的端口,需要注意的是:不是master映射到宿主机的端口

如果 show slave status\G命令结果中出现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两项都为Yes,那说明没问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值