引言
在构建数据库复制零碎时,正确配置主库和备库是确保数据同步顺利进行的关键步骤。以下是建设复制的根本步骤,次要包含主库开启 binlog 的要害参数设置,创立主库复制账号以满足根本权限需要,备库参数配置和初始化的步骤。
1、主库开启 binlog
主库须要配置的要害参数
server_id:主备库须要设置为不同。
log_bin:binlog 文件的前缀,能够指定绝对路径,也能够只指定文件名。若不指定门路,binlog 默认寄存在 datadir 指定的门路下。
binlog_format:可设置为 STATEMENT、MIXED、ROW 这几种模式。个别倡议应用 ROW 模式。
server_id=100
log_bin=/data/mysql5.6/binlog/binlog
binlog_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=ON
log_bin=/data/mysql5.6/binlog/binlog
binlog_format=ROW
4、备库初始化
备库数据筹备,须要满足条件:
- 备库数据是主库数据在过来某个工夫点的快照
- 从那个工夫点开始的 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.sql
mysqldump 参数阐明:
- 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;
更多技术信息请查看云掣官网 https://yunche.pro/?t=yrgw