一、MySQL主从复制
1、简介
我们为什么要用主从复制?
主从复制目的:
可以做数据库的实时备份,保证数据的完整性;
可做读写分离,主服务器只管写,从服务器只管读,这样可以提升整体性能。
原理图:
从上图可以看出,同步是靠log文件同步读写完成的。
2、更改配置文件
两天机器都操作,确保 server-id 要不同,通常主ID要小于从ID。一定注意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
3、建立用于从库复制的账号rep
通常会创建一个用于主从复制的专用账户,不要忘记授权。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
4、备份主库,及恢复到从库
把主库现有数据备份下来,再恢复到从库,此时两个主机的数据一致。
如果事先有数据的话,这不不能忘。
1)在主库上加锁,使只有只读权限。
1 2 3 4 5 |
|
2)记住就是这个点备份的。
1 2 3 4 5 6 7 |
|
3)克隆窗口,备份数据。
1 2 3 4 5 6 |
|
4)查看master status;数值是否正常。
1 2 3 4 5 6 7 |
|
5)解锁库
1 2 |
|
6)恢复到从库
1 2 |
|
5、配置从库及生效
更改从库和主库的连接参数,配置生效。检查就成功了!
1)进入从库。
1 2 |
|
2)更改从属服务器用于与主服务器进行连接和通讯的参数。
1 2 3 4 5 6 7 8 |
|
3)查看更改的参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
4)生效!
1 2 |
|
5)检查下列参数,符合则正常!
1 2 3 4 5 |
|
6)查看relay-bin.logo。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
7)查看relay-log.info。
1 2 3 4 5 |
|
8)查看master.info。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
6、读写分离
读写分离在生产环境比比皆是,也是必备技能。
忽略MySQL主从复制授权表同步,读写分离。
1 2 3 4 5 6 7 |
|
1)通过read-only参数防止数据写入从库的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
2)主从同步故障
1 2 3 4 5 6 7 8 |
|
3)从库开启bin-log
1 2 3 4 |
|
7、主宕机
我们来模拟一下,如果主机宕机了,那我们该如何让从快速替换,让损失降到最小?当然了,双机热备也是一个不错的选择,那下节会给大家讲解。
一主多从的环境下,如果主宕机了,选一台从做主,继续和其它从同步。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
8、双主
使用主主前提:表的主键自增。
双主情况下,ID会是这样情况,通过程序指定ID写库M1:1,3,5,M2:2,4,6。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
二、MySQL备份及恢复
1、备份单个数据库
最基础的备份单个数据库。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
|
2、备份多个数据库
备份多个数据库的情况呢?
1 2 3 |
|
3、备份单个及多个表
那如果备份单个和多个表,怎么办?
1 2 3 4 5 6 |
|
4、mysqldump 的参数
mysqldump 的关键参数
1 2 3 4 5 6 7 8 9 10 |
|
5、增量恢复
重要的来了,生产环境一般是增量备份与恢复;所谓增量,就是在原数据的基础上继续添加数据,不必每次都重新添加,省时省力。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
2.立即刷新并备份出binlog
1 2 3 4 5 6 |
|
3.恢复
1 2 3 4 |
|