1.前言
日常应用开发中,总会涉及到数据库的相关优化,一般都会提到主从同步和读写分离。
这篇文章对搭建主从同步数据库做复盘记录,方便学习。
2.实现步骤
1.基础环境
两台mysql数据库:版本为5.7.31
注意:配置主数据库版本不能低于从数据库版本
主数据库: 192.168.0.116
从数据库: 192.168.0.171
2.主数据库配置
(1) 打开配置文件
vim /etc/my.cnf
(2) 添加配置 该配置一定要再mysqld后面配置
[mysqld]
# 开启二进制日志
log-bin=mysql-bin
# 设置server-id,唯一值,标识主机
server-id=201
# 只当同步的数据库 可以不配置 如果需要多个数据库 可直接配置多个
binlog-do-db = test
# 不同步哪些数据库
binlog-ignore-db = mysql 说明:此配置可以和上一行命令选择使用
(3) 配置后重启数据库
systemctl restart mysqld
(4) 创建账号
# 进入mysql
mysql -u root -p
# 创建同步用户
CREATE USER '用户名称'@'%' IDENTIFIED BY '用户密码';
# 查看用户创建成功
select user,host from mysql.user;
# 分配权限
--用户授权数据库
grant select,insert,update,delete,create on 数据库名称.* to 用户名称;
或者
grant select,insert,update,delete,create on * to 用户名称;
*代表整个数据库
# 刷新权限
flush privileges;
# 查看master状态,记录二进制文件名File和位置Position, 后续从数据库配置需要使用到file和位置
show master status;
3.从数据库配置
(1) 打开配置文件
vim /etc/my.cnf
(2) 添加配置 该配置一定要再mysqld后面配置
[mysqld]
# 设置server-id,唯一值,标识主机
server-id=202
# 从数据库也需要开启binlog
log-bin=mysql-bin
# 指定同步数据库 可指定多个
replicate-do-db=test
(3) 重启服务
systemctl restart mysqld
(4) 配置mysql
# 进入mysql
mysql -u root -p
# 配置参数命令
CHANGE MASTER TO
MASTER_HOST='主数据库IP',
MASTER_USER='主数据库用户名称',
MASTER_PASSWORD='主数据库用户密码',
MASTER_LOG_FILE='主数据库file名称',
MASTER_LOG_POS=主数据库Position;
示例:
# 启动进程
start slave;
# 查看slave状态
show slave status\G
当Slave_IO_Running和Slave_SQL_Running都为YES配置主从同步就成功了
4注意事项
1.配置主从同步完成后,登录主数据库需要使用创建的用户账号,然后创建数据这样才能触发主从同步。
2.从数据库中配置mysql中MASTER_LOG_FILE和MASTER_LOG_POS参数必须要和主数据中二进制文件中的一致。
3.主从同步,都是需要开启mysql-binlog日志,最好日志文件和数据目录设置到不同的磁盘分区,可以降低io等待,提升性能;并且在磁盘故障的时候可以利用mysql-binlog恢复数据。