MySQL 主从复制操作
OS:CentOS7
主从形式: 一主一从
实现 MySQL 主从复制需要进行的配置:
主服务器:
开启二进制日志
配置唯一的 server-id
获得 master 二进制日志文件名及位置
创建一个用于 slave 和 master 通信的用户账号
从服务器:
配置唯一的 server-id
使用 master 分配的用户账号读取 master 二进制日志
启用 slave 服务
具体操作:
主服务器操作
1), 修改主数据库服务器配置文件 my.cnf
- 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 主从复制功能的验证了.
来源: http://www.bubuko.com/infodetail-3398295.html