silencehgt 2020-01-29
server_id = 1 #唯一标识,主库从库不能重复 log_bin = mysql-bin #开启日志 binlog_format=MIXED #日志记录的格式 max_binlog_size = 512M #单个日志文件最大 expire_logs_day = 3 #日志有效期(天) binlog_do_db = test1,test2 #日志记录那些数据库 binlog_ignore_db = mysql,performance_schema,information_schema #日志记录忽略那些数据库
2)、创建用于同步账户
mysql> CREATE USER ‘user‘@‘10.10.10.11‘ IDENTIFIED BY ‘passwd‘; #创建用户 mysql> GRANT REPLICATION SLAVE ON *.* TO ‘user‘@‘10.10.10.11‘; #分配权限,只能10.10.10.11从服务器连接 mysql>flush privileges;
3)、查看master状态
show master status命令记录二进制文件名(mysql-bin.000003)和position位置(77)。
mysql > SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 77 | test | manual,mysql | +------------------+----------+--------------+------------------+
从服务器操作
1)、修改从数据库服务器配置文件my.cnf
server_id = 2 log_bin = mysql-bin #开启日志 binlog_format=MIXED #日志记录的格式 max_binlog_size = 512M #单个日志文件最大 expire_logs_day = 3 #日志有效期(天) replicate_do_db = test1,test2 #slave上配置,指定slave要复制哪个库 replicate-ignore-db=mysql,performance_schema,information_schema #slave上配置,指定slave要忽略哪些库 relay_log_recovery = 1 #从库建议开启,有利于数据一致性 log_slave_updates = 1 #如果从库还会用做主库,建议开启
2)、设置同步信息
先停止同步
mysql>stop slave;
设置同步信息
mysql> CHANGE MASTER TO -> MASTER_HOST=‘10.10.10.10‘, -> MASTER_USER=‘user‘, -> MASTER_PASSWORD=‘passwd‘, -> MASTER_LOG_FILE=‘mysql-bin.000003‘, -> MASTER_LOG_POS=77;
其中master_log_file 和 master_log_pos为上面主库show master status命令记录的信息。
3)、启动slave 同步进程
mysql>start slave;
4)、slave状态查看
show slave status\G 命令查看,主要查看这几项:
Slave_IO_Running: Yes Slave_SQL_Running: Yes Master_Log_File: mysql-bin.000003 Relay_Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 2720 Exec_master_log_pos: 2720
Slave_IO_Running和Slave_SQL_Running都为YES,表示主从同步设置成功了。
验证操作,如在master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据,即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可完成MySQL主从复制功能的验证了。