1 准备工作
-
1 选择一个服务器当做主服务器,将服务器上需要的数据进行备份
-
2 安装从库的 MySQL,需要与主服务器的版本保持一致
-
3 将主服务器上的数据同步到从库中(主从集群只会同步创建集群之后的数据操作,对于原有的数据不会同步)
2 配置主数据库
修改配置文件
vim /etc/my.cnf
- 1
添加配置
[mysqld]
log-bin=mysql-bin
server-id=1
- 1
- 2
- 3
重启 mysql 服务(centOS 7+)
systemctl restart mysqld
- 1
使用命令行以 root 用户进入 MySQL
mysql -u root -p
- 1
输入密码,进入
创建拥有从节点同步权限的用户
GRANT REPLICATION SLAVE ON *.* TO ''userName''@''%'' IDENTIFIED BY ''yourPassword'';
- 1
其中 userName 为用户名,yourPassword 为密码
刷新权限
FLUSH PRIVILEGES;
- 1
查询主库状态
show master status;
- 1
记录下 File 、Position 字段的值
其中 File 为操作日志文件,Position 为指针位置,这两个字段是数据同步的关键

3 配置从库
修改配置文件
vim /etc/my.cnf
- 1
添加配置
[mysqld]
server-id=2
- 1
- 2
注意: 每一个服务器的 server-id 都不能重复
重启 mysql 服务(centOS 7+)
systemctl restart mysqld
- 1
使用命令行以 root 用户进入 MySQL
mysql -u root -p
- 1
输入密码,进入
执行同步语句
CHANGE MASTER TO MASTER_HOST=''masterServerIp'', MASTER_PORT=masterPort, MASTER_USER=''masterUser'', MASTER_PASSWORD=''masterPassword'', MASTER_LOG_FILE=''masterLogFile'', MASTER_LOG_POS=masterPosition;
- 1
其中 masterServerIp 为主库服务器地址(ip或域名)
masterPort 为主库 mysql 端口(需要确保外网可访问)
masterUser 为刚创建的用于向从库同步数据的用户
masterPassword 为刚创建的用于向从库同步数据的用户密码
masterLogFile 为主库的日志文件名,对应字段 File
masterPosition 为主库指针位置,对应字段 Position
启动从库同步
start slave;
- 1
查询从库同步状态
show slave status\G;
- 1
主要关注字段: Slave_IO_Running,Slave_SQL_Running,这两个字段值为 Yes 则从库同步状态良好

至此,主从集群的配置已经基本完成
4 从库设置只读用户
登录从库,添加只读用户
GRANT SELECT ON *.* TO ''userName''@''%'' IDENTIFIED BY ''yourPassword'';
- 1
其中 userName 为数据库用户名,yourPassword 为用户密码
刷新权限
FLUSH PRIVILEGES;
- 1
在连接从库时使用只读用户