1 环境配置
服务器IP | 类型 |
---|---|
192.168.203.135 | 主库 |
192.168.203.136 | 从库 |
2 软件参数
名称 | 版本 |
---|---|
系统 | CentOS release 6.8 (Final) |
MySql | mysql-5.7.11 |
Cent OS 系统采用虚拟机工作站进行搭建,搭建过程请自行百度搜索相关流程、详细步骤;
MySql下载地址:wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.11-1.el6.x86_64.rpm-bundle.tar
3 流程简介
我们先准备两台 CentOS 服务器,分别安装好MySql 服务,具体的安装步骤可参考 安装MySql服务。
安装成功以后,分别修改MySql主从两台服务的配置文件,重新启动MySql。测试在主库操作变更数据,从库是否也发生变化。
4 具体步骤
4.1 主服务器(master)
打开MySql,修改MySql配置文件;命令:vim /etc/my.cnf 在 [mysqld] 下 添加参数:
# 主从同步参数 master
log-bin=/var/lib/mysql/bin-log
server-id=135
binlog_format=row
expire_logs_days=30
max_binlog_size=200M
master_info_repository=table
binlog-do-db=springcloud-app
binlog-ignore-db=mysql
添加完成以后,保存退出。重新启动 MySql 服务。
4.2 从服务器(slave)
打开MySql,修改MySql配置文件;命令:vim /etc/my.cnf 在 [mysqld] 下 添加参数:
# 主从同步配置 slave
bind_address=0.0.0.0
log-bin=/var/lib/mysql/bin-log
binlog_format=row
relay_log=/var/lib/mysql/slave-relay-log
relay_log_index=slave-relay-log.index
server-id=136
expire_logs_days=30
max_binlog_size=200M
read_only=on
relay_log_info_repository=table
# 只复制指定的库
replicate_do_db=springcloud-app
# 为了让从库是 crash safe
relay_log_recovery=1
# 清除已经执行过的 relay log
relay_log_purge=1
super_read_only=on
添加完成以后,保存退出。重新启动 MySql 服务。
4.3 连接主从服务器
连接主从服务器的方式是以下步骤:
- 在主库中创建一个数据库用户,提供给从库使用。
- 查看主库binlog文件名称,binlog日志偏移量。提供给从库使用。
- 修改从库中的主库信息,包括连接主服务器使用的用户、密码、binlog文件名称、binlog日志偏移量等。
- 查看从库中 slave 信息。
- 测试数据。
[在135执行] 步骤1 使用SQL如下:(用户名称:syn_user;密码:123456)
grant replication slave on *.* to 'syn_user'@'%' identified by '123456';
[在135执行] 步骤2 使用SQL如下:(记录 File 字段、Position 字段的值)
show master status;
[在136执行] 步骤3 使用SQL如下:(将主库用户及密码、IP地址,和从主库查询得到的 File 字段、Position 字段的值信息,写入到从库服务器中)
CHANGE MASTER TO master_host = '192.168.203.135',
master_user = 'syn_user',
master_password = '123456',
master_port = 3306,
master_log_file = 'bin-log.000005',
master_log_pos = 543;
[在136执行] 步骤4 使用SQL如下:(查看从库的信息)
show slave status;
如图:
5 测试
根据自己搭建的实际数据进行测试,这里不再演示。
如果出现无法同步的问题,基本检查步骤:
- 数据库是否正常启动;
- 主库新建的用户密码、权限是否正确;
- 检查MySql的 log 日志 查看错误信息,进行具体定位等。
6 总结
搭建主从服务器完成以后,测试数据同步正常,是否有着小小的成就感,也是否感觉少些什么。比如:
- 同步失败了怎么办?
- 怎么才能够及时的发现数据库异常问题?
- 等等。