准备:版本一致的两个数据库
主数据库:192.168.3.33
从数据库:192.168.3.34
一、主数据库master修改
a,修改配置文件 my.cnf
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置唯一 server-id
b,重启mysql,创建用于同步的账户
登入mysql,
创建用户slaveuser,密码slavepass
mysql>grant replication slave on *.* to 'slaveuser'@'%' identified by 'slavepass';
mysql>flush privileges; #刷新权限
c,查看master状态,记录二进制文件名和位置<File | Position>:
mysql>show master status;
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 1197 | | | |
+------------------+----------+--------------+------------------+-------------------+
注:执行完这个步骤后不要再操作主数据库了,防止主数据库状态值变化
二、从数据库修改
a,修改配置文件 my.cnf
[mysqld]
server-id=2 #设置唯一 server-id
b,执行同步命令
mysql>change master to master_host='192.168.3.33',master_user='slaveuser',master_password='slavepass',master_log_file='mysql-bin.000001',master_log_pos=1197; # 执行同步命令,设置主数据库ip,同步帐号密码,同步位置
mysql>start slave; # 开启同步功能
c,检查从数据库状态
mysql> show slave status\G;
*************************** 1\. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 192.168.3.33
Master_User: slaveuser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 1197
Relay_Log_File: localhost-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
……
其他可能用到的相关参数
1、master端 my.cnf:
# 不同步哪些数据库
binlog-ignore-db = mysql
# 只同步哪些数据库
binlog-do-db = game
# 日志格式,建议mixed
# statement 保存SQL语句
# row 保存影响记录数据
# mixed 前面两种的结合
binlog_format = mixed
# 日志保留时间
expire_logs_days = 10
# 控制binlog的写入频率。每执行多少次事务写入一次
# 这个参数性能消耗很大,但可减小MySQL崩溃造成的损失
sync_binlog = 5
2、slave端:
# 开启主从同步
mysql> start slave;
# 停止主从同步
mysql> stop slave;
# 连接断开时,重新连接超时时间
mysql> change master to master_connect_retry=50;