一. 准备工作
1. 选择一个服务器当做主服务器,将服务器上需要用到的数据库进行备份.
2 .安装从库的MySQL,需要与主服务器的版本保持一致(或者主MySQL版本不能高于从MySQL版本).
3 .将主服务器上的数据同步到从库中.(主从同步只会同步创建同步之后的数据操作,对于原有的数据不会同步)
二.配置主数据库
(1).修改配置文件
在my.cnf(linux在/etc/my.cnf;window在MySQL安装目录)中添加配置下面代码
log-bin=mysql-bin
server-id=1
(2).重启 mysql 服务,让配置生效
(3).创建拥有从节点同步权限的用户(不可直接复制执行,需下面提示把对应值替换)
GRANT REPLICATION SLAVE ON *.* TO 'userName'@'%' IDENTIFIED BY 'yourPassword';
其中 userName 为用户名,yourPassword 为密码
刷新权限
FLUSH PRIVILEGES;
查询主库状态
show master status;
File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
mysql-bin.000047 | 6192 |
记录下 File ,Position 字段的值,其中 File 为操作日志文件,Position 为指针位置,这两个字段是数据同步的关键
三.配置从数据库
(1).修改配置文件
在/etc/my.cnf中添加配置下面代码
server-id=2
如果有多台从服务器server-id=的值不能有相同的,可以递增
(2).重启 mysql 服务,让配置生效
(3).执行同步语句(不可直接复制执行,需下面提示把对应值替换)
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
(4).启动从库同步
start slave;
查询从库同步状态
show slave status;
主要关注字段: Slave_IO_Running,Slave_SQL_Running,这两个字段值为 Yes 则从库同步状态良好
至此,数据库同步的配置已经基本完成
四. 从库设置只读用户、
登录从库,添加只读用户
GRANT SELECT ON *.* TO 'userName'@'%' IDENTIFIED BY 'yourPassword';
其中 userName 为数据库用户名,yourPassword 为用户密码
刷新权限
FLUSH PRIVILEGES;
在连接从库时使用只读用户.