简介
MySQL 主从又叫做 Replication,AB 复制. 简单讲就是 A 和 B 两台机器做主从后, 在 A 上写数据, 另外一台 B 也会跟着写数据, 两者数据实时同步的
MySQL 主从是基于 binlog 的, 主上须开启 binlog 才能进行主从.
主从过程大致有 3 个步骤
1)主将更改操作记录到 binlog 里
2)从将主的 binlog 事件 (sql 语句) 同步到从本机上并记录在 relaylog 里
3)从根据 relaylog 里面的 sql 语句按顺序执行
主上有一个 log dump 线程, 用来和从的 I/O 线程传递 binlog
从上有两个线程, 其中 I/O 线程用来同步主的 binlog 并生成 relaylog, 另外一个 SQL 线程用来把 relaylog 里面的 sql 语句落地
主从配置
主上操作
安装 mysql
vi /etc/my.cnf, 增加 server-id=130 和 log_bin=slx1
修改完配置文件后, 启动或者重启 mysqld 服务(/etc/init.d/mysqld restart)
重启后会在 / data/mysql / 目录下生成(跟 log_bin 有关)
-rw-rw----. 1 mysql mysql 120 4 月 11 19:03 slx1.000001
-rw-rw----. 1 mysql mysql 14 4 月 11 19:03 slx1.index
把 mysql 库备份并恢复成 slx 库, 作为测试数据
mysqldump -uroot mysql> /tmp/mysql.sql
mysql -uroot -e "create database slx"
mysql -uroot slx </tmp/mysql.sql
创建用作同步数据的用户
grant replication slave on . to 'repl'@[slave_ip] identified by 'password';
flush tables with read lock; 暂时把动作冻结, 锁定
show master status; 显示结果
- mysql> show master status;
- +-------------+----------+--------------+------------------+-------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
- +-------------+----------+--------------+------------------+-------------------+
- | slx1.000001 | 652233 | | | |
- +-------------+----------+--------------+------------------+-------------------+
- 1 row in set (0.00 sec)
从上操作
安装 mysql
查看 my.cnf, 配置 server-id=132, 要求和主不一样
修改完配置文件后, 启动或者重启 mysqld 服务
把主上 aming 库同步到从上
可以先创建 aming 库, 然后把主上的 / tmp/mysql.sql 拷贝到从上, 然后导入 aming 库
- mysql -uroot
- stop slave;
change master to master_host='[ip]', master_user='repl', master_password='', master_log_file='[主上的 File]', master_log_pos=[主上的 position],
start slave;
还要到主上执行 unlock tables 解锁
配置参数
主服务器上
- binlog-do-db= // 仅同步指定的库
- binlog-ignore-db= // 忽略指定库
从服务器上
- replicate_do_db=
- replicate_ignore_db=
- replicate_do_table=
- replicate_ignore_table=
replicate_wild_do_table= 支持通配符 %
replicate_wild_ignore_table=
来源: http://www.bubuko.com/infodetail-2559263.html