MySQL主从同步
简介
将单机部署的mysql修改成多个mysql服务器主从同步,有多个优点:
- 有数据备份的效果:如果一个机器数据损坏丢失,其他机器上还有备份
- 缓解服务器压力:可以实现读写分离,主库写入数据,从库读取数据,压力分摊到多个服务器上
- 独立数据环境:从库的数据可以用来应用到测试和数据统计的场景中,不影响业务
异步复制方案
开启binlog,设置server-id
-- 查看是否开启bin_log
SHOW VARIABLES LIKE 'log_bin';
# 编辑配置文件
vim /usr/local/mysql/my.cnf
# 修改下面配置
# 开启binlog
bin_log
# 设置server-id (主从服务器都需要设置,id不能相同)
server-id = 10
主服务器设置账号
# 创建一个有自动复制功能的账号(主从复制)
# 允许复制*.*全部数据/全部表,账号名字 slave
# 允许其在任何主机%复制,复制的时候需要使用密码 123456
grant replication slave on *.* to 'slave'@'%' identified by '123456';
# 刷新权限
flush privileges;
# 查看主服务器状态
show master status;
mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000002 | 398 | | | |
+----------------------+----------+--------------+------------------+-------------------+
启动从服务器复制功能
# 给从服务器设置主从联系
change master to master_host='192.168.137.10', master_user='slave', master_password='123456', master_log_file='localhost-bin.000002', master_log_pos=398;
# 启动从服务器的复制功能
start slave;
# 关闭复制功能
stop slave;
# 验证从服务器是否成功
show slave status;
将主服务器的3306端口开放
# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 关闭3306端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
# 使配置立即生效
firewall-cmd --reload
# 查看防火墙开启的所有端口
firewall-cmd --zone=public --list-ports
备注内容
Slave_IO_Running: Yes # 连接主服务器成功
Slave_SQL_Running: Yes