目前我们使用的主流的不停机Mysql主从进行同步操作的工具是XtraBackup,包括阿里云和腾讯。该工具用于备份和解压。MySQL主从同步原理:MySQL主从同步是在MySQL主从复制(Master-SlaveReplication)的基础上实现的。通过在MasterMySQL上设置binlog(使其开启),SlaveMySQL通过一个I/O线程从MasterMySQL读取binlog,然后传输到SlaveMySQL的relaylog,再由SlaveMySQL的SQL线程SlaveMySQL从relaylog中读取relaylog,然后应用到SlaveMySQL的数据库中。XtraBackup备份原理:innobackupex在后台线程中跟踪InnoDB日志文件,然后复制InnoDB数据文件。数据文件复制完成后,日志复制线程也会结束。这样,数据副本和开始备份后的事务日志是在不同的时间点获取的。完成以上步骤后,就可以使用InnoDB的崩溃恢复代码执行事务日志(redolog)来实现数据的一致性。备份过程1)备份,备份阶段,跟踪事务日志和复制数据文件(物理备份)。2)准备、重放事务日志,使所有数据在同一时间点,达到一致状态。XtraBackup的优点:1)备份速度快,物理备份可靠2)备份过程不会中断正在进行的事务(不需要锁表)3)可以基于压缩等功能节省磁盘空间和流量4)自动备份验证5)恢复速度快6)可以将备份传播转移到另一台机器上7)备份数据不增加服务器负载xtrabackup安装[root@localhostopt]#yum-yinstallperlperl-devellibaiolibaio-develperl-time-HiResperl-DBD-MySQLlibev-develrsyncperl-Digest-MD5Centos6[root@localhostopt]#wgethttps://www.percona.com/downl...[root@localhostopt]#yum--enablerepo=epellocalinstallpercona-xtrabackup-2.3.2-1.el6.x86_64.rpm-yCentos7[root@localhostopt]#wgethttps://downloads.percona.com...[root@localhostopt]#rpm-ivhpercona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm-y[root@localhostopt]#whereisinnobackupexinnobackupex:/usr/bin/innobackupex/usr/share/man/man1/innobackupex.1.gz备份数据库[root@localhostopt]#innobackupex--defaults-file=/etc/my.cnf--user=account--password=password--socket=/home/mysql/mysql.sock/home/BackupData/》恢复数据库注意:检查mysql的版本,尽量保证数据库版本的一致性。在从机上运行[root@localhostopt]#mkdir20210831_00[root@localhostopt]#ll20210831_00.tar.gz-rw-r--r--1rootroot508147921Aug3108:5320210831_00.tar.gz[root@localhostopt]#tar-zxf20210831_00.tar.gz-C./20210831_00/[root@localhostopt]#ls-l./20210831_00-rw-rw----1rootroot4848月31日00:23backup-my.cnf-rw-rw----1根根1048576008月31日00:06ibdata1drwxr-xr-x2根根40968月31日14:25mysqldrwxr-xr-x2根根40968月31日14:25performance_schema-rw-rw----1rootroot75Aug3100:23xtrabackup_binlog_info-rw-rw----1rootroot147Aug3100:23xtrabackup_checkpoints-rw-rw----1rootroot641Aug3100:23xtrabackup_info-rw-rw----1rootroot2747392Aug3100:23xtrabackup_logfile在Mysql数据库配置文件中,指定数据存放目录创建对应的文件夹如:datadir=/home配置在配置文件/mysql[root@localhosthome]#mkdir/home/mysql恢复日志文件[root@localhosthome]#innobackupex--defaults-file=/etc/my.cnf--user=root--password=123123--应用程序ly-log/opt/20210831_00InnoDB:将日志文件./ib_logfile101重命名为./ib_logfile0InnoDB:已创建新日志文件,LSN=62456861898InnoDB:支持的最高文件格式为Barracuda.InnoDB:日志扫描已通过检查点lsn62456862220InnoDB:正在恢复:已扫描直到日志序列号62456862229(0%)InnoDB:Databasewasnotshutdownnormally!InnoDB:Startingcrashrecovery.InnoDB:xtrabackup:LastMySQLbinlogfileposition338527434,filenamemysql-bin.000153InnoDB:Removedtemporarytablespacedatafile:"ibtmp1"InnoDB:为临时表创建共享表空间InnoDB:将文件'./ibtmp1'大小设置为12MB。物理上将文件写满;请稍等...InnoDB:文件'./ibtmp1'大小现在为12MB.InnoDB:找到96个重做回滚段。1个重做回滚段处于活动状态。InnoDB:32个非重做回滚段处于活动状态。InnoDB:page_cleaner:1000毫秒预期循环耗时15111毫秒。设置可能不是最佳的。(酡=0和evicted=0,在此期间。)InnoDB:5.7.32开始;日志序列号62456862229xtrabackup:开始关闭innodb_fast_shutdown=1InnoDB:FTS优化线程退出。InnoDB:开始关闭...InnoDB:关闭已完成;登录号6245686224821083114:37:52完成OK!只有当完成OK!出现,表示数据文件已经成功解压恢复。[root@localhosthome]#innobackupex--defaults-file=/etc/my.cnf--user=root--password=mopon123--copy-back/opt/20210831_0021083114:55:39[01]...done21083114:55:39[01]将./xtrabackup_master_key_id复制到/home/mysql/xtrabackup_master_key_id21083114:55:39[01]...done21083114:55:39[01]将./ibtmp1复制到/home/mysql/ibtmp121083114:55:39[01]...done21083114:55:39完成好!完成OK!结果是这个提示说明恢复正确!!![root@localhosthome]#chown-Rmysql.mysql/[root@localhosthome]#/etc/init.d/mysqldstartStartingMySQL(PerconaServer)......成功!START同步主库[root@localhosthome]#cat/opt/20210831_00/xtrabackup_binlog_infomysql-bin.000153338527434526b9441-6616-11eb-8737-005056b05ba7:1-77041081[root@localhosthome]#mysql-uroot-p123456MySQL[(none)]>将master.host1.host1.06更改为master'master_user='slave',master_password='slave',master_log_file='mysql-bin.000153',master_log_pos=338527434;查询成功,0行受影响,2条警告(0.78秒)MySQL[(none)]>startslave;MySQL[(none)]>showslavestatus\G;......................Slave_IO_Running:YesSlave_SQL_Running:Yes...................................至此,Mstar一直在同步数据库!
