主库配置:
设置主从配置前必须确保两个数据库数据一致, 可从主库把数据复制到从库.
1. 停止主库服务.
# service mysql stop
2. 选择设置 my.cnf 配置文件
# vim /etc/my.cnf
3. 修改文件内容:
在 [mysqld] 下面添加内容:
server-id=1 # 1.表示主库, 其他表示从库, 不能重复.
log-bin=mysql-bin
binlog-do-db=TestDB# 需要同步的数据库名称(TestDB)
binlog-ignore-db=mysql,test# 不需要同步的数据库(排除数据库)名称, 分号隔开.
4. 开始MYSQL服务
# service mysql start
5. 设置从库登录用户.
# mysql -u root
> GRANT REPLICATION SLAVE ON *.* TO 'TestUser'@'192.168.0.3' IDENTIFIED BY 'TestPwd';
> GRANT REPLICATION SLAVE ON *.* TO '登录用户'@'从库IP' IDENTIFIED BY '登录密码';
6. 刷新权限
> flush privileges;
7. 获取主库 主库mysql-bin文件, 主库Position.
> show master status\G;
File: mysql-bin.000015主库mysql-bin文件
Position: 120主库Position
Binlog_Do_DB: DingShirtDB
Binlog_Ignore_DB: mysql,test
注意: 主库mysql-bin文件, 主库Position 需要在从库里配置.
从库配置:
1. 停止从库服务.
# service mysql stop
2. 选择设置 my.cnf 配置文件
# vim /etc/my.cnf
3. 修改文件内容:
在 [mysqld] 下面添加内容:
server-id=2 # 2.表示从库, 不能重复.
log-bin=mysql-bin
4. 开始MYSQL服务
# service mysql start
5. 设置主库信息.
# mysql -u root
> change master to master_host='192.168.0.2', master_user='TestUser', master_password='TestPwd', master_log_file='mysql-bin.000014', master_log_pos=120;
> change master to master_host='主库IP', master_user='登录用户', master_password='登录密码', master_log_file='主库mysql-bin文件', master_log_pos=主库Position;
6. 开启主从配置并同步数据
> start slave;
7. 查看从库状态.
> show slave status\G
Slave_IO_State: Waiting for master to send event
Master_Host: 101.37.68.85
Master_User: dingshirtdb_bak
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000015
Read_Master_Log_Pos: 10509810
Relay_Log_File: mysqld-relay-bin.000005
Relay_Log_Pos: 10509973
Relay_Master_Log_File: mysql-bin.000015
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
其他操作: 停止主从配置 stop slave;