MySQL 主从复制搭建
主从复制搭建过程可分为四大步骤,包括准备服务器、配置主库、配置从库和测试。
一、准备服务器
服务器示例
10.0.38.72(master)
10.0.38.72(slave)
1. 首先判断是否要和公司其他已经安装好的 MySQL 保持版本一致。
2. 如果不是实验新功能性质,则不选择 development release,而是安装 General Availability(GA)release(代表稳定版本,可在生产系统使用)。
准备好两台服务器之后,在上述两台服务器中分别安装好 MySQL,并完成基础的初始化准备工作。
二、配置主库
1. 修改配置文件/etc/my.cnf
# mysql服务ID,保证整个集群环境中唯一,取值范围1~2^32-1,默认为1。
server-id=1
# 是否只读,1代表只读,0代表读写
read-only=0
# 忽略的数据,指不需要同步的数据库
binlog-ignore-db=mysql_001
# 指定同步的数据库
binlog-do-db=db01
2. 登陆 MySQL,创建远程登陆链接的账号,并授予主从复制的权限
# 创建kingdee_test用户,并设置密码,该用户可在任意主机链接该mysql服务。
mysql> create user 'kingdee_test'@'%' identified with mysql_native_password by 'Root@123456';
# 为'kingdee_test'@'%' 用户分配主从复制权限。
mysql> grant replication slave on *.* to 'kingdee_test'@'%';
3. 通过指令,查看二进制日志坐标
mysql> show master status
三、配置从库
1. 修改配置文件/etc/my.cnf
# mysql服务ID,保证整个集群环境中唯一,取值范围1~2^32-1,和主库不一样即可。
server-id=2
# 是否只读,1代表只读,0代表读写
read-only=1
2. 登陆 MySQL,设置主库配置
mysql> change replication source to source_host='10.0.38.72', source_port=8307,source_user='kingdee_test',source_password='Root@123456',source_log_file='mysql_bin_1.000004',source_log_pos=1804;
参数说明如下:
- source_host:主库IP地址
- source_port:连接主库的端口号
- source_user:连接主库的用户名
- source_password:连接主库的密码
- source_log_file:binlog日志文件名
- source_log_pos:binlog日志文件位置
3. 开启同步操作
mysql> start replica;
4. 查看主从同步状态
mysql> show replica status;
四、测试主从复制
1. 查看 GTID 状态
mysql> show variables like '%gtid%';
2. 在主库上创建数据库、表,并插入数据
mysql> create database kingdee_cosmic ,use kingdee_cosmic;CREATE TABLE `t_sec_user` ( `id` INT NOT NULL, `namebase` VARCHAR(15) NOT NULL, `sex` VARCHAR(5) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci INSERT INTO t_sec_user(id,namebase,sex) VALUES(1,'Tom', '1'),(2,'Trigger', '0'),(3,'Dawn','7');
3. 在从库中查询数据,验证主从是否同步
mysql> show database;
五、总结
- 主从复制是指将主库的数据变更同步到从库,从而保证主库和从库数据一致,可用于数据备份、失败迁移、读写分离、降低单库读写压力等场景;
- MySQL 主从复制分类包括异步复制、同步复制、半同步复制;
- 主从复制原理为:1)主库汇报数据变更记录在二进制日志文件 binlog 中;2)从库连接主库,读取 binlog 日志,并写入自身中继日志 Relay log;3)slave 重做中继日志,改变反映它自身的数据。