mysql主从备份
Sep 15, 2016
MySQL的主从复制配置很简单, 帖子已经很多了, 再不厌其烦的写主要是为了下篇配合zabbix做监控存活做准备.
先说mysql备份策略
冷备份(不能实时备份)
- 将mysql的dataDir目录打包scp/rsync 到备份服务器. 优点: 简单暴力. 冷备的缺点, mysql版本一致, 后期数据量大了, 备份越来越久.
- 使用mysqldump, (mysqlcopy, mysqlbackup企业版) 自带工具备份, 有点: 简单, 一条命令就ok, mysql版本能向上兼容, 数据量大, 备份慢.
热备份(及时备份)
- mysql主从复制, 主mysql开启bin-log, 从mysql读取主bin-log文件名和位置, 写入到从库中(mysql版本需要一致)
- inotify+rsync inotify检测文件是否发生变动, 如变动使用rsync备份到远程.(使用所有备份, 不只是mysql业务)
- drbd (分布式块设备) 即时写入.(使用所有备份, 不只是mysql业务)
配置mysql主从配置.
英文好的同学, 直接参照官方文档
默认环境
1
2192.168.1.100 主mysql5.6
192.168.1.101 从mysql5.6主mysql配置
编辑my.cnf. (参考多目录下my.cnf的优先级)
1
2
3
4bind-address=192.168.1.100
server-id=1
bin_log=/var/log/mysql/mysql-bin.log
binlog_do_db=newdatabase # 需要同步的数据库, 不写, 表示全部库添加具有复制权限的用户
1
2GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave_password';
flush privileges; # 刷新权限重启动mysql服务
service mysqld restart | systemctl restart mysqld
锁定当前主库的数据状态, 将当前数据状态备份到从库中去.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15USE DATABASE;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | newdatabase | |
+------------------+----------+--------------+------------------+
# 此窗口不要动了(如果有改动, 会自动解除锁), 新开一个窗口, 将数据库导出
# 新窗口mysql回话
mysqldump -uUsername -pPassword newdatabase > newdatabase-dump.sql
exit; # 主配置完成, 关闭退出.
从mysql配置
导入主mysql数据
1
mysql -uUser -pPassword newdatabase < newdatabase-dump.sql
编辑从my.cnf
1
2
3
4server-id=2
relay-log=/var/log/mysql/mysql-relay-bin.log
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=newdatabase重启从mysql服务
service mysqld restart | systemctl restart mysqld
设置从mysql连接主mysql
1
2
3
4
5
6
7CHANGE MASTER TO MASTER_HOST='192.168.1.100',
MASTER_USER='slave',
MASTER_PASSWORD='slavepassword',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 107;
start slave;查看是否成功
1
2
3
4
5
6SHOW SLAVE STATUS\G
# 出现一下 表明已经ok了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
仅作参考, 有问题欢迎拍砖. :)