------------------ 动态添加 MySQLDB3 节点(innobackupex) ---------------------------
18、在 MySQLDB1 节点执行全库备份
[root@mysqldb1 ~]# innobackupex --user=sysadmin --password=mysql --socket=/tmp/mysql3306.sock --defaults-file=/mysql/3306/my.cnf --slave-info /home/mysql
xtrabackup: Error: --defaults-file must be specified first on the command line
----提示配置文件参数必须放在第一位
[root@mysqldb1 ~]# innobackupex --defaults-file=/mysql/3306/my.cnf --user=sysadmin --password=mysql --socket=/tmp/mysql3306.sock --slave-info /home/mysql
19、将 /home/mysql/yyyy-mm-dd_hh24-mi-ss 这个文件夹拷贝到 Salve2 节点的 /home/mysql 目录下
注:或者直接用 scp 命令拷贝
scp -r /home/mysql/yyyy-mm-dd_hh24-mi-ss root@mysrvc:/home/mysql
20、停止 MySQLDB3 节点上的mysql实例,并备份 data 目录
[root@mysqldb3 ~]# service mysql3306 stop
[root@mysqldb3 ~]# cd /mysql/3306
[root@mysqldb3 3306]# mv data data.bak
21、执行恢复
[root@mysqldb3 3306]# innobackupex --defaults-file=/mysql/3306/my.cnf --user=sysadmin --apply-log /home/mysql/yyyy-mm-dd_hh24-mi-ss
[root@mysqldb3 3306]# innobackupex --defaults-file=/mysql/3306/my.cnf --user=sysadmin --copy-back /home/mysql/yyyy-mm-dd_hh24-mi-ss
22、修改 data 目录所有者权限 (如果使用mysql用户备份操作时,则无需做目录所有者权限修改)
[root@mysqldb3 3306]# chown -R mysql:mysql data
23、启动数据库实例
[root@mysqldb3 3306]# service mysql3306 start
24、在 MySQLDB3 节点查看 Master 节点的二进制文件名和位置信息
[root@mysqldb3 3306]# cat data/xtrabackup_binlog_pos_innodb
mysql_bin.000004 976
[root@mysqldb3 3306]#
25、配置 MySQLDB3 节点复制信息
[root@mysqldb3 3306]# su - mysql
[mysql@mysqldb3 ~]# mysql -u sysadmin -pmysql -P 3306 --socket=/tmp/mysql3306.sock
mysql> show slave status \G
Empty set (0.00 sec)
mysql> change master to
-> master_host='192.168.1.41',
-> master_port=3306,
-> master_user='repl',
-> master_password='repl',
-> master_log_file='mysql_bin.000004',
-> master_log_pos=976;
Query OK, 0 rows affected, 2 warnings (0.06 sec)
mysql> start slave;
Query OK, 0 rows affected (0.17 sec)
mysql>
26、在 MySQLDB3 启动复制功能
mysql> start save;
27、测试
在 MySQLDB1节点的test数据库中执行创建数据表或数的更新操作,验证在 MySQLDB2 和 MySQLDB3 节点的test数据库中是否正常复制。
============================================
MySQL主从复制几个重要的启动选项
(1)、log-slave-updates
log-slave-updates 这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,但是,如果这个从服务器B是服务器A的从服务器,同时还作为服务器C的主服务器,那么就需要开发这个选项,这样它的从服务器C才能获得它的二进制日志进行同步操作。
(2)、master-connect-retry
master-connect-retry 这个参数是用来设置在和主服务器连接丢失的时候,重试的时间间隔,默认是60秒。
(3)、read-only
read-only是用来限制普通用户对从数据库的更新操作,以确保从数据库的安全性,不过如果是超级用户依然可以对从数据库进行更新操作。
(4)、slave-skip-errors
在复制过程中,由于各种的原因,从服务器可能会遇到执行BINLOG中的SQL出错的情况,在默认情况下,服务器会停止复制进程,不再进行同步,等到用户自行来处理。
Slave-skip-errors的作用就是用来定义复制过程中从服务器可以自动跳过的错误号,当复制过程中遇到定义的错误号,就可以自动跳过,直接执行后面的SQL语句。
--slave-skip-errors=[err1,err2,…….|ALL]
但必须注意的是,启动这个参数,如果处理不当,很可能造成主从数据库的数据不同步,在应用中需要根据实际情况,如果对数据完整性要求不是很严格,那么这个选项确实可以减轻维护的成本