1 准备工作
-
1 选择一个服务器当做主服务器,将服务器上需要的数据进行备份
-
2 安装从库的 MySQL,需要与主服务器的版本保持一致
-
3 将主服务器上的数据同步到从库中(主从集群只会同步创建集群之后的数据操作,对于原有的数据不会同步)
2 配置主数据库
修改配置文件
vim /etc/my.cnf
添加配置
[mysqld]
log-bin=mysql-bin
server-id=1
重启 mysql 服务(centOS 7+)
systemctl restart mysqld
使用命令行以 root 用户进入 MySQL
mysql -u root -p
输入密码,进入
创建拥有从节点同步权限的用户
GRANT REPLICATION SLAVE ON *.* TO 'userName'@'%' IDENTIFIED BY 'yourPassword';
其中 userName
为用户名,yourPassword
为密码
刷新权限
FLUSH PRIVILEGES;
查询主库状态
show master status;
记录下 File
、Position
字段的值
其中 File
为操作日志文件,Position
为指针位置,这两个字段是数据同步的关键
3 配置从库
修改配置文件
vim /etc/my.cnf
添加配置
[mysqld]
server-id=2
注意: 每一个服务器的 server-id
都不能重复
重启 mysql 服务(centOS 7+)
systemctl restart mysqld
使用命令行以 root 用户进入 MySQL
mysql -u root -p
输入密码,进入
执行同步语句
CHANGE MASTER TO MASTER_HOST='masterServerIp', MASTER_PORT=masterPort, MASTER_USER='masterUser', MASTER_PASSWORD='masterPassword', MASTER_LOG_FILE='masterLogFile', MASTER_LOG_POS=masterPosition;
其中 masterServerIp
为主库服务器地址(ip或域名)
masterPort
为主库 mysql 端口(需要确保外网可访问)
masterUser
为刚创建的用于向从库同步数据的用户
masterPassword
为刚创建的用于向从库同步数据的用户密码
masterLogFile
为主库的日志文件名,对应字段 File
masterPosition
为主库指针位置,对应字段 Position
启动从库同步
start slave;
查询从库同步状态
show slave status\G;
主要关注字段: Slave_IO_Running
,Slave_SQL_Running
,这两个字段值为 Yes
则从库同步状态良好
至此,主从集群的配置已经基本完成
4 从库设置只读用户
登录从库,添加只读用户
GRANT SELECT ON *.* TO 'userName'@'%' IDENTIFIED BY 'yourPassword';
其中 userName
为数据库用户名,yourPassword
为用户密码
刷新权限
FLUSH PRIVILEGES;
在连接从库时使用只读用户