★★★记一次mysql热备操作使用XtraBackup,关键字,不停机不停业务,完全不影响主库运行

公司交代的任务,之前从来没弄过,看网上的教程基本语焉不详~数据又不能瞎搞,所以摸索了几天,遇到不少坑,记录一下,也供和一样的小白参考,~一句话会者不难~本教程不影响主库~不影响主库~不影响主库~完全不用停机停业务~

,启动主库的同步功能

在Linux环境下MySQL的配置文件的位置是在 /etc/my.cnf ,在该文件下指定Master的配置如下在【mysqld节点下】:

log-bin=mysql-binserver-id=2binlog-ignore-db=information_schemabinlog-ignore-db=clusterbinlog-ignore-db=mysqlbinlog-do-db=ufind_db

(如果全部数据包括mysql用户名密码都同步则可以不用填写绿色部分)

log-slave-updates = 1   (重要,如果slave数据库再作为master则填写此项,否则数据不记录日志,无法同步成功) 详见笔记★MySQL主从同步设置的重要参数log_slave_updates

 

这里的server-id用于标识唯一的数据库,这里设置为2,在设置从库的时候就需要设置为其他值。

binlog-ignore-db:表示同步的时候ignore的数据库 

binlog-do-db:指定需要同步的数据库

样例

 

 

一,先安装相关软件(主库)

#yum install perl-Time-HiRes*

#yum install perl-DBD-MySQL -y

yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL

wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.9/RPM/rhel6/x86_64/percona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm

或从下面地址下载,mysql5.1及以下需要下载2.0版本

https://www.percona.com/downloads/XtraBackup/LATEST/

rpm -ivh percona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm

 

, 执行备份语句(主库)

innobackupex --defaults-file=/etc/my.cnf --user root --socket=/tmp/mysql.sock --password 8023kl  /data/xtrabackup/ &   ##备份

如果备份失败检查

/etc/my.cnf文件未指定basedir及datadir

在[mysqld]下面增加(根据实际路径)

1

2

basedir = /data/mysql

datadir = /data/mysql/data

 

但是一般情况下,这个备份是不能用于恢复的,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件处于不一致的状态,我们现在就是要通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

# innobackupex --apply-log /data/xtrabackup/2018-03-10_20-05-57

从上面可以看出,只是对innobackupex加--apply-log参数应用日志,然后加上备份的目录

 

本例用

innobackupex --defaults-file=/etc/my.cnf --user root --socket=/tmp/mysql.sock --password 8023kl --apply-log /data/xtrabackup/2018-03-10_20-05-57/ ##preparing,undo撤销未提交的事务,重放redo log

 

 

三,删除从库的现有数据库 (备库)

stop slave;

reset slave;  

drop database mddb;

drop ……;

 

 

四,同步数据至备库(备库)

rsync -av 192.168.216.129:/data/xtrabackup/2018-03-10_20-05-57/ /opt/mysql/data (mysql的datadir)

在主库目录2018-03-10_20-05-57 中more xtrabackup_binlog_pos_innodb确定从备份目录中获取到binlog和pos位置

mysql-bin.000004 7634 (这两个参数设置在第五步中,意思从这个位置开始同步,即全量备份后面的增量)

 

 

注意同步完需要修改目录权限 chown -R mysql:mysql /usr/local/mysql/data

 

 

 

五,设置从库的同步选项

stop slave;

change master to master_host='192.168.216.129',master_user='root',master_password='8023kl',master_log_file='mysql-bin.000004', master_log_pos=7634;

start slave;

开启同步

mysql> start slave;

mysql> show slave status\G;

 

 

 

最后一步发现 IO_running :NO(备库如果是正常安装不会出现这步问题)

看到下方提示 , "Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs;  these UUIDs must be different for replication to work." 

 

原因是mysql直接拷贝至本机导致文件相同,解决方法如下

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3、解决故障

###查看auto.cnf文件

[root@dbsrv1 ~] cat /data/mysqldata/auto.cnf  ### 主上的uuid

[auto]

server-uuid=62ee10aa-b1f7-11e4-90ae-080027615026

[root@dbsrv2 ~]# more /data/mysqldata/auto.cnf ###从上的uuid,果然出现了重复,原因是克隆了虚拟机,只改server_id不行

[auto]

server-uuid=62ee10aa-b1f7-11e4-90ae-080027615026

[root@dbsrv2 ~]# mv /data/mysqldata/auto.cnf  /data/mysqldata/auto.cnf.bk  ###重命名该文件

[root@dbsrv2 ~]# service mysql restart          ###重启mysql

Shutting down MySQL.[  OK  ]

Starting MySQL.[  OK  ]

[root@dbsrv2 ~]# more /data/mysqldata/auto.cnf  ###重启后自动生成新的auto.cnf文件,即新的UUID

[auto]

server-uuid=6ac0fdae-b5d7-11e4-a9f3-0800278ce5c9

 

###再次查看slave的状态已经正常

[root@dbsrv1 ~]# mysql -uroot -pxxx -e "show slave status\G"|grep Running

Warning: Using a password on the command line interface can be insecure.

            Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

###主库端查看自身的uuid

master_mysql> show variables like 'server_uuid';

+---------------+--------------------------------------+

| Variable_name | Value                                |

+---------------+--------------------------------------+

| server_uuid  | 62ee10aa-b1f7-11e4-90ae-080027615026 |

+---------------+--------------------------------------+

1 row in set (0.00 sec)

###主库端查看从库的uuid

master_mysql> show slave hosts;

+-----------+------+------+-----------+--------------------------------------+

| Server_id | Host | Port | Master_id | Slave_UUID                          |

+-----------+------+------+-----------+--------------------------------------+

|        33 |      | 3306 |        11 | 62ee10aa-b1f7-11e4-90ae-080027615030 |

|        22 |      | 3306 |        11 | 6ac0fdae-b5d7-11e4-a9f3-0800278ce5c9 |

+-----------+------+------+-----------+--------------------------------------+

### Author : Leshami

 

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值