问题汇总
show master status没有结果, binglog没有开关或生效
log_bin
serverid
步骤
1.准备多实例环境
2.配置my.cnf
3登陆主库增长用于从库链接主库的同步帐号rep而且受权replication slave同步的权限
4登陆主库。整库锁表flush table with read lock (窗口关闭失效,超时参数达到也失效),而后show master status 查看binlog的位置状态
5新开窗口linux命令行导出sql拷贝到从库所在的及其
6解锁及其
7把主库导出的sql恢复到从库中
8根据主库的show master status查看binlog的位置状态在从库执行change master to
9从库开启开关start slave
10 show slave status查看同步状态
要点
异步方式同步
逻辑同步模式,多种模式,默认是经过sql语句执行
主库经过记录binlog实现对从库的同步,binlog记录数据库的跟新语句
主库一个线程,从库由1个io线程和一个sql线程来完成
从库关键文件master。info,relay-log,relay info功能
若想完成级联 须要打开logbin和log-slave-updates;
生产环境快速配置mysql主从复制的方案
安装好配置从库的数据库,配置好log-bin和server-id参数
无需登陆配置主库my.cnf,主库的log-bin和server-id默认配置好的
登陆主库用于从库链接主库同步的帐号
使用mysqldump 带--master-data=1无需binlog文件及对应的位置点
从库开启同步开关start slave;
从库show slave status检查同步状态跟新测试
mysql> show processlist;
+----+------+----------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+----------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
| 2 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 11 | root | 192.168.88.172:40311 | NULL | Binlog Dump | 3190 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL |
+----+------+----------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
| 3 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 4 | system user | | NULL | Connect | 3241 | Waiting for master to send event | NULL |
| 5 | system user | | NULL | Connect | 3037 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL |
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
3 rows in set (0.00 sec)
my.cnf
master端
--binlog-do-db二进制日志记录数据库多个数据库用,分割
--binlog-ignore-db二进制日志胡月数据库多个数据库用,分割
replication的slave端六个参数
--replication-do-db须要制定复制的数据库
--replication-ignore-db设定胡月的数据库=db
--replication-do-table
--replication-ignore-table
--replication-wild-do-table
--replication-wild-ignore-table
生产受权方案
主库 select insert delete update
从库 回收insert delete update
经过readonly
super不限制
[mysqld] readonly
slave-iostatus yes
slave sql running no
second sql behindmaster 是否为0 0为同步
方法一stop slave
set global sql_slave_skip_counter=10
start slave;
方法二
根据错误号跳过制定的错误
slave-skip-errors=1032,1062;
让mysqwl记录binlog
1级联
2把从库做为备份的服务器
log-slave-updates只加这一句话[mysqld]
expire_log_days=7保留七天的binlog
主库down机
show processlist;
查看全部从库的master info看哪一个的跟大
选个pos最大的做为主库
1确保全部的relay log所有更新完毕
在每一个从库上执行stop slave io_thread;
show processlist;
直到看到has readall relay log
2登陆到主库
stop slave;
reset ;
quit
3进到数据库数据目录,删除master。info rtelay——log info功能
cd /data/3306/data
rm -f master.info relay-log.info
检查受权表readonly参数
4
开启binlog注释 slave-log readonly
restart
其余冲库
stop slave;
change master 只改ip
解决主键自增加id错误
master1;
auto_increament_increament=2 --1,3,5
auto_increament_offset=1起始位置
master2
auto_increament_increament=2 --2,4,6
auto_increament_offset=2
使用主主的前提,主键自增
mysql