今天疫情复工,最近线上需要数据库压力增大,所以我们需要考虑下主从的模式了,当然我们的主从主要还是基于云主机搭建的,这里我们使用docker进行下mysql5.7的主从搭建演示。
搭建服务器:192.168.31.30
mysql主的端口:3307
mysql从的端口:3308
下面开始搭建mysql5.7的主从
1、创建mysql的master目录
mkdir -p /mbt/mysql-master/conf mkdir -p /mbt/mysql-master/data mkdir -p /mbt/mysql-master/log mkdir -p /mbt/mysql-slave/conf mkdir -p /mbt/mysql-slave/data mkdir -p /mbt/mysql-slave/log
2、进入到/mbt/mysql-master/conf创建my.cnf
cd /mbt/mysql-master/conf touch my.cnf
把下面的内容复制进去
[mysqld] server_id=1001 #设置server_id,同一局域网中需要唯一 binlog-ignore-db=mysql #指定不需要同步的数据库名称 log-bin=mall-mysql-bin #开启二进制日志功能 binlog_cache_size=1M #设置二进制日志使用内存大小(事务) binlog_format=row #设置使用的二进制日志格式(mixed,statement,row) expire_logs_days=7 #二进制日志过期清理时间。默认值为0,表示不自动清理。 slave_skip_errors=1062 #跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
3、进入到/mbt/mysql-slave/conf创建my.cnf
cd /mbt/mysql-slave/conf touch my.cnf
把下面的内容复制进去
[mysqld] server_id=1002 #设置server_id,同一局域网中需要唯一 binlog-ignore-db=mysql #指定不需要同步的数据库名称 log-bin=mall-mysql-bin #开启二进制日志功能 binlog_cache_size=1M #设置二进制日志使用内存大小(事务) binlog_format=row #设置使用的二进制日志格式(mixed,statement,row) expire_logs_days=7 #二进制日志过期清理时间。默认值为0,表示不自动清理。 slave_skip_errors=1062 #跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
4、创建一个mysql-master的容器
docker run -p 3307:3306 --name mysql-master -v /mbt/mysql-master/log:/var/log/mysql -v /mbt/mysql-master/data:/var/lib/mysql -v /mbt/mysql-master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
5、创建一个mysql-slave的容器
docker run -p 3308:3306 --name mysql-slave -v /mbt/mysql-slave/log:/var/log/mysql -v /mbt/mysql-slave/data:/var/lib/mysql -v /mbt/mysql-slave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
此时我们的mysql两个mysql就可以搭建好了。
6、连接master的mysql,端口为3307,创建一个远程账号
CREATE USER 'slave'@'%' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%' ;
7、连接slave的mysql,端口为3308,执行下如下语句
show slave status change master to master_host='192.168.31.30',master_user='slave',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000003',master_log_pos=609,master_connect_retry=30; start slave show slave status
到这里,mysql的master和slave的docker搭建方式就完成了,此时我们可以在主上创建一个test的库,然后再刷新下slave上的库列表,就可以看到test库已经同步创建过来了。
备注:
1、上面在slave上执行的
change master to master_host='192.168.31.30',master_user='slave',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000003',master_log_pos=609,master_connect_retry=30;
上面的信息都需要做对应的修改,同时,log_file,log_pos,这里的信息如何获取呢?
这里我们直接连接到master,端口为3307,然后执行下
show master status;
就可以看到对应的信息
还没有评论,来说两句吧...