mysql主从,或者全备份

mysql的主从复制依赖bin-log日志,会因为各种问题中断,如flush table,网络问题等,还有一些未知的bug因素,之前使用mysql import方式恢复速度太慢,一个3G的库要恢复一个下午,实在是无法忍受。现在用一个别的方法来操作只需要花费15分钟左右。

1.备份主库

  1. innobackupex --defaults-file=/etc/my.cnf --user=root --password='xxxxxxxxxxx' --defaults-group=mysqld3 --socket=/tmp/mysql_3308.sock /data/slave_data >/data/back.log 2>&1

解释:

  • --default-group是查看/etc/my.cnf里面的内容,确认这个库在配置文件里面的名字是什么,因为是备份,稍微注意下,错了也没事,只是备份出来的不是你想要的库而已。
  • /data/slave_data 是存放备份文件的,随便改都可以,注意的是要有足够的空间哦。
  • /data/back.log这个是日志文件,很重要里面会有gtid的值,备库根据这个gtid值才能知道从哪个位置跟主库同步。

等这个备份跑完,在/data/slave_data下会生成一个日期的文件夹,这个文件夹就是备出来的数据库,用tar -czf 2016-11-17_15-44-22.tar.gz  2016-11-17_15-44-22/ 打包后传输到备库的机器上去。

2.恢复备库

  1. 备份解压打包文件,tar -xzf 2016-11-17_15-44-22.tar.gz
  2. 备库停止,找到/etc/my.cnf 看下要停止的库的[mysql'number']是多少, mysqld_multi stop number(是数字)。
  3. 删除备库,找到备库的数据库文件全部删除,在/etc/my.cnf里面找到datadir这个就可以看到,不要把目录删了,只要清空里面的东西就好。
  4. 恢复数据,innobackupex --defaults-file=/etc/my.cnf --user=root --password='xxxxxxxxxxx' --defaults-group=mysqld2 --copy-back /data/slave_data/2016-11-17_15-44-22
  5. 应用日志,innobackupex --defaults-file=/etc/my.cnf --user=root --password='xxxxxxxxxxx' --defaults-group=mysqld2 --apply-log /data/slave_data/2016-11-17_15-44-22
  6. 修改权限,chown -R mysql.mysql /usr/local/mysql/data/dbdata_3307 ,就是datadir的目录
  7. 启动数据库 myself_multi start server-id
  8. 配置主从:
  • 进入数据库 mysql -uroot -pxxxxxxxxxxx -S /tmp/mysql_3307.sock
  • reset master;刷新自己的bin-log
  • SET GLOBAL gtid_purged=''71d2f30a-feed-11e4-8688-10604b9eee2a:1-20554684'';  这串数字,就在刚才备份的日志里面,应该是在比较底部的位置。

  • change master to master_host='172.16.1.19',master_user='root',master_password='xxxxxxxxxx',master_port=3306,master_auto_position = 1;配置主从

  • start slave;  最后一步完成
  • show slave status\G;  可以看到主从信息,要是Slave_IO_Running: Yes  ;Slave_SQL_Running: Yes表示成功。
posted @ 2017-05-19 15:24  千城program  阅读(302)  评论(0编辑  收藏  举报