说在前面:

虽然说现在主从同步的配置多数情况下都采用 docker 的方式快速部署,但是我们可以从手动部署的方式上学到更多的知识。

为什么要使用 MySQL 主从同步?

在我们日常的项目生产或运行过程中,数据库都扮演着一个至关重要的角色,一旦数据库出现问题,整个服务就会瘫痪。另外,数据库也面临着被恶意修改的风险…所以,为了能够减少甚至避免在意外情况下发生的损失,我们就会采取主从同步的方式来部署 MySQL。

什么是 MySQL 主从同步?

在主库被写入数据之后,主库会将数据同步给自己的从库,当 MySQL 主库因为某种原因进入到不可用的状态,我们的应用可以切换到从库来维持服务,而不是直接瘫痪。

搭建 MySQL 主从同步

搭建环境
CentOs7,mysql5.7,3 节点
安装 MySQL

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server

获得 MySQL 初始密码

grep "password" /var/log/mysqld.log

登录数据库

mysql -u root -p

设置新密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

创建从节点用户并授权(Master 节点)

create user 'slave'@'%' identified by '123456';
grant replication slave on *.* to slave@'%';

mysql 默认不开启日志功能,我们可以以下面的命令查看

show variables like '%log_bin%';

在/etc/my.cnf 中添加

# 主从配置
server-id=42
log-bin=/var/lib/mysql/mysql-bin.log
# 日志过期时间
expire_logs_days=10
# 日志最大容量
max_binlog_size=200M
# master节点无需同步
binlog_ignore_db=mysql
# 开启日志功能(slave不用开)
log-bin=mysql-bin

重启 mysql 服务(全部节点)

systemtrl restart mysqld.service
change master to master_user='slave',master_password='123456',master_host='192.168.1.135',master_log_file='mysql-bin.000001',master_log_pos=154;

从节点启动并查看运行状态

start slave;
show slave status\G;

如果一直显示 Slave_IO_Running: Connecting
请检查 mysql 账号名密码,ip,防火墙
至此,部署完成
我们可以对数据库进行一些操作查看是否能够成功同步。