记录在生产环境搭建MYSQL主从同步

环境描述:

现在在205机器有一个MYSQL生产服务,以及204机器dokcer服务

目标:

在204机器的DOCKER中搭建3台MYSQL8从机,与205的MYSQL5.5.27主机同步,并对齐所有业务数据

架构变更说明:

架构变更

执行:

1在docker中离线安装MYSQL8.0.22版本作为从机MYSQL版本
2配置每个docker MSYQL8容器数据目录
在/home/docker/mysql建3个文件夹/slave3308/slave3309/slave3310
每个slave文件夹下创建data,config,mysql-files目录
并在config写入my.cnf配置文件,配置如下

[mysqld]
server-id = 2 # 节点ID,确保唯一
log-bin=mysql-bin #开启mysql的binlog日志功能
relay-log = mysql-relay-bin #relay-log中继日志是连接master和slave的核心
#需要同步的3个库
replicate_wild_do_table=db1.% 
replicate_wild_do_table=db1.% 
replicate_wild_do_table=db1.% 
#需要ignore的库和表
replicate-wild-ignore-table=information_schema.% #屏蔽无用数据库以及系统库
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=performance_schema.%

replicate-wild-ignore-table=db1.temp_statisic #dmp中间表不需要同步
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

3创建docker容器

docker run --name slave3310 -p 3310:3310 -v /home/docker/mysql/slave3310:/etc/mysql  -v /home/docker/mysql/slave3310/logs:/var/log/mysql -v /home/docker/mysql/slave3310/data:/var/lib/mysql -v /home/docker/mysql/slave3310/config/my.cnf:/etc/mysql/my.cnf  -v /home/docker/mysql/slave3310/mysql-files:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.22

4主机配置文件添加如下配置

#mysql master1 config 
[mysqld]
server-id = 1        # 节点ID,确保唯一
# log config
log-bin = mysql-bin     #开启mysql的binlog日志功能
sync_binlog = 100         #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全sync_binlog>0,表示每sync_binlog次事务提交
binlog_format = mixed   #binlog日志格式,mysql默认采用statement,建议使用mixed-statement和row结合
expire_logs_days = 7                           #binlog过期清理时间
max_binlog_size = 512m                    #binlog每个日志文件大小
binlog_cache_size = 4m                        #binlog缓存大小
max_binlog_cache_size= 512m              #最大binlog缓存大
binlog-ignore-db=mysql,information_schema,performance_schema #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
auto-increment-offset = 1     # 自增值的偏移量
auto-increment-increment = 1  # 自增值的自增量
slave-skip-errors = all #跳过从库错误

5重启3从1主让配置生效
6主机5.5.27创建用户并授权从机访问。

CREATE USER slave IDENTIFIED BY 'slave';
grant replication slave on *.* to 'slave'@'xx.xx.xx.xx'  identified by 'slave';
FLUSH PRIVILEGES;

7查看master的状态

how master status;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set 
|+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005      120|              | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)

8采用mysqldump备份主库数据
全量备份db1和db2两个库
mysqldump db1 -h xx.xx.xx.205 -uroot -p >/tmp/db1.sql
mysqldump db2 -h xx.xx.xx.205 -uroot -p >/tmp/db2.sql
9从库分别进入docker创建对应数据库
CREATE DATABASE IF NOT EXISTS db1 DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE IF NOT EXISTS db2 DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
10从库数据导入
docker cp dir1 容器ID:/dir2
将导出的/tmp/下的db1.sql,db2.sql分别导入容器
分别进入从机数据库执行source导入数据
11.配置从库

mysql> stop slave;
CHANGE MASTER TO 
MASTER_HOST = 'xx.xx.xx.205',  
MASTER_USER = 'slave', 
MASTER_PASSWORD = 'slave',
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154,
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000; #毫秒

# MASTER_LOG_FILE='mysql-bin.000005',#与主库File 保持一致
# MASTER_LOG_POS=120 , #与主库Position 保持一致

12.启动从库slave进程

start slave;

13.分别进入从库查看同步状态

show slave status \G
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值