本章内容:
主从复制
简介原理
备份主库及恢复从库,配置从库生效
读写分离
如果主宕机了,怎么办?
双主的情况
MySQL 备份及恢复方案
备份单个及多个数据库
mysqldump 的常用参数
如何增量恢复呢?
增量恢复的必要条件
生产环境 mysqldump 备份命令
恢复喽
一、MySQL主从复制
1、简介
我们为什么要用主从复制?
主从复制目的:
可以做数据库的实时备份,保证数据的完整性;
可做读写分离,主服务器只管写,从服务器只管读,这样可以提升整体性能。
原理图:
从上图可以看出,同步是靠log文件同步读写完成的。
2、更改配置文件
两天机器都操作,确保 server-id 要不同,通常主ID要小于从ID。一定注意。
# 3306和3307分别代表2台机器
# 打开log-bin,并使server-id不一样
#vim /data/3306/my.cnf
log-bin = /data/3306/mysql-bin
server-id = 1
#vim /data/3307/my.cnf
log-bin = /data/3307/mysql-bin
server-id = 3
#检查
1、
[root@bogon ~]# egrep "log-bin|server-id" /data/3306/my.cnf
log-bin = /data/3306/mysql-bin
server-id = 1
[root@bogon ~]# egrep "log-bin|server-id" /data/3307/my.cnf
log-bin = /data/3307/mysql-bin
server-id = 3
2、
[root@localhost ~]# mysql -uroot -p -S /data/3306/mysql.sock -e "show variables like 'log_bin';"
Enter password:
+-----------------------+--------+
| Variable_name | Value |
+-----------------------+--------+
| log_bin | ON | # ON 为开始开启成功
+-----------------------+--------+
3、建立用于从库复制的账号rep
通常会创建一个用于主从复制的专用账户,不要忘记授权。
# 主库授权,允许从库来连接我取日志
[root@localhost ~]# mysql -uroot -p -S /data/3306/mysql.sock
Enter password:
# 允许从库192.168.200网段连接,账号rep,密码nick。
mysql> grant replication slave on *.* to 'rep'@'192.168.200.%' identified by 'nick';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 检查创建的rep账号:
mysql> select user,host from mysql.user;
+--------+-----------------------------+
| user | host |
+--------+------------------------------+
| root | 127.0.0.1 |
| rep | 192.168.200.% |
| root | localhost |
| root | localhost.localdomain |
+--------+------------------------------+
7 rows in set (0.00 sec)
4、备份主库,及恢复到从库
把主库现有数据备份下来,再恢复到从库,此时两个主机的数据一致。
如果事先有数据的话,这不不能忘。
1) 在主库上加锁,使只有只读权限。
mysql> flush table with read lock;
Query OK, 0 rows affected (0.00 sec)
#5.1、5.5锁表命令略有不同。
# 5.1锁表:flush tables with read lock;
# 5.5锁表:flush table with read lock;
2) 记住就是这个点备份的。
mysql> show master status;
+---------------------------+-------------+-------------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------------+------------+-------------