公司交代的任务,之前从来没弄过,看网上的教程基本语焉不详~数据又不能瞎搞,所以摸索了几天,遇到不少坑,记录一下,也供和一样的小白参考,~一句话会者不难~本教程不影响主库~不影响主库~不影响主库~完全不用停机停业务~
零,启动主库的同步功能
在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
或从下面地址下载,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