mysqldump备份恢复

主节点锁表

  1. mysql> flush tables with read lock;
  2. mysql> show master status;
  3. # 记录file和pos;

主节点备份

  1. mysqldump -hIP -uNAME -pPASS --add-drop-table --routines --events --all-databases --force > all-databases.sql

拷贝备份文件到从节点

  1. scp all-databases.sql IP:/root/

从节点停止slave

  1. mysql> stop slave;

从节点导入备份sql文件

  1. mysql -hIP -uNAME -pPASS < all-databases.sql

设置从库同步

  1. change master to master_host='IP',master_port=3306,master_user='repl',master_password='PASS',master_log_file='mysql-bin.000002',master_log_pos=6557;

从节点启动slave

  1. mysql> start slave;

从节点查看slave状态

  1. mysql> show slave status \G;

主节点解锁

  1. mysql> unlock tables;

xtrabackup备份恢复

主节点备份数据

  1. xtrabackup --user=NAME --password=PASS --backup --datadir=/var/lib/mysql/ --target-dir=/root/mysqlbak/
  2. tar -czvf mysqlbak.tar.gz /root/mysqlbak/
  3. scp mysqlbak.tar.gz IP:/root/

从节点关闭slave

  1. tar -xvf mysqlbak.tar.gz
  2. xtrabackup --prepare --target-dir=/root/mysqlbak
  3. mysql -hIP -uNAME -pPASS
  4. mysql> stop slave;

从节点关闭mysql服务

  1. systemctl stop mysqld
  2. systemctl status mysqld

从节点清空数据目录

  1. cd /var/lib/
  2. mv mysql{,.bak}

从节点恢复数据

  1. innobackupex --user=NAME --password=PASS --copy-back /root/mysqlbak
  2. chown -R mysql.mysql /var/lib/mysql
  3. systemctl start mysqld

设置从库同步

  1. cd /root/mysqlbak
  2. cat xtrabackup_binlog_info # 记录file 和pos
  3. mysql -hIP -uNAME -pPASS
  4. mysql> change master to master_host=IP,master_port=3306,master_user='repl',master_password=PASS,master_log_fil e=FILE,master_log_pos=POS;
  5. mysql> start slave;

从节点查看slave 状态

  1. mysql> show slave status \G;