MySQL运维实战(7)建立复制

云的事随心讲 2024-02-22 05:43:14
引言在构建数据库复制系统时,正确配置主库和备库是确保数据同步顺利进行的关键步骤。以下是建立复制的基本步骤,主要包括主库开启binlog的关键参数设置,创建主库复制账号以满足基本权限需求,备库参数配置和初始化的步骤。 1、主库开启binlog主库需要配置的关键参数server_id:主备库需要设置为不同。log_bin:binlog文件的前缀,可以指定绝对路径,也可以只指定文件名。若不指定路径,binlog默认存放在datadir指定的路径下。binlog_format:可设置为STATEMENT、MIXED、ROW这几种模式。一般建议使用ROW模式。 server_id=100log_bin=/data/mysql5.6/binlog/binlogbinlog_format=ROW# log_slave_updates=ON上述参数中,log_bin不能动态修改。需要重启mysql才能生效。使用show global variables确认主库binlog已经开启: mysql> show global variables like 'log_bin%';| log_bin | ON || log_bin_basename | /data/mysql5.6/binlog/binlog || log_bin_index | /data/mysql5.6/binlog/binlog.index |使用show binary logs命令查看主库binlog列表: mysql> show binary logs;+---------------+-----------+| Log_name | File_size |+---------------+-----------+| binlog.000001 | 120 |+---------------+-----------+1 row in set (0.00 sec)2、主库创建复制账号(满足基本权限要求)主库需要创建一个复制账号,备库需要使用复制账号连接到主库,获取binlog。 mysql> create user 'rep'@'%' identified by 'rep123';Query OK, 0 rows affected (0.00 sec)mysql> grant replication slave on *.* to 'rep'@'%';Query OK, 0 rows affected (0.00 sec)复制账号需要的权限:replication slave。 3、备库参数配置备库上必须设置的参数server_id,server_id的值需要和主库设置成不一样。 server_id=236其他binlog参数可以不设置,或者和主库设置成一样。备库开启binlog和log_slave_updates后,会将从主库上复制过来的事务也记录到binlog,在创建级连复制时,需要这么配置。 log_slave_updates=ONlog_bin=/data/mysql5.6/binlog/binlogbinlog_format=ROW4、备库初始化备库数据准备,需要满足条件: 备库数据是主库数据在过去某个时间点的快照从那个时间点开始的binlog都存在我们可以使用备份(如percona开源的xtrabackup,或mysqldump)等工具创建主库的一致性备份,将恢复到备库中,然后再开启复制。 如果主备库都是新初始化的数据库实例,主库binlog没有缺失,则可以略过数据库备份和恢复这一个步骤,直接开启复制。 mysqldump备份数据这里使用mysqldump进行备份: /opt/mysql5.7/bin/mysqldump -uroot -h127.0.0.1 -P3357 -pabc123 --all-databases \ --master-data=2 --routines --flush-privileges --triggers --events > /tmp/mysql57_dump.sqlmysqldump参数说明: all-databases --routines --triggers --events:备份所有数据库,包括存储过程、触发器、定时事件master-data=2:记录数据库当前binlog位点。指定master-data后,后自动加上lock-tables选项,锁定数据库,除非同时加上--single-transaction。single-transaction:使用innodb的一致性读取机制实现一执行数据库备份,不锁表。但是对非InnoDB引擎(如MyISAM)无效。同时备份过程中不能有DDL。flush-privileges:备份完mysql数据库后,加上flush privileges命令。数据恢复时,恢复完mysql数据库后就会执行flush privileges命令,恢复出来的用户信息才会生效。gtid-mode=auto:如果数据库开启了GTID,则备份文件中会加入set global GTID_PURGED=xxx;mysqldump数据恢复到目标实例执行: mysql -uroot -h127.0.0.1 -P3357 -pabc123 source mysql57_dump.sql注意,执行source前,确认登陆了正确的数据库。如果登陆到主库执行恢复操作,则会引起主库数据丢失。 5、备库创建复制通道在备库上使用change master命令建立复制信息,这里指定从主库binlog.000001文件头部开始复制(master_log_pos没有指定时,从binlog文件头部复制)。 change master to master_host='172.16.121.234',master_port=3356,master_user='rep',master_password='rep123',master_log_file='binlog.000001';start slave;show slave status\G位点从备份文件中找: # head -30 /tmp/mysql57_dump.sql | grep 'CHANGE MASTER'-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.000006', MASTER_LOG_POS=608;更多技术信息请查看云掣官网云掣YunChe - 可观测运维专家 | 大数据运维托管 | 云MSP服务
0 阅读:0

云的事随心讲

简介:感谢大家的关注