MySQL主从复制搭建(基于GTID)

目前环境基本都是使用基于gtid的主从复制,从库的搭建可以使用mysqldump或者XtraBackup,下面分别介绍:

使用XtraBackup搭建从库(建议使用)

数据量大的首选,推荐使用。步骤如下:

  1. 主库执行备份脚本:/opt/mysql/scripts/mysqlbackup_temp.sh,备份目录默认在/opt/xxx/tempback下,具体目录在备份日志最后有输出,类似:190802 16:42:33 Backup created in directory '/opt/tempback/20190802164050'
  2. 把备份目录copy到从库服务器上
  3. 在从库执行恢复操作:/opt/mysql/scripts/mysql_recovery.sh /opt、tempback/20190802164050,该脚本可指定一个参数,意为备份目录。执行完,MySQL已经启动好了
  4. 从库执行reset master命令:mysql -uroot -p -e "reset master;"
  5. 从库执行set GTID_PURGED命令:set global GTID_PURGED='XXXXXX:XXXX',此gtid串在备份目录中的xtrabackup_binlog_info文件记录了。
  6. 从库执行change master命令:CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='xxslave', MASTER_PASSWORD='gudongslave', MASTER_PORT=3306, MASTER_AUTO_POSITION=1;
  7. 从库启动复制,并观察复制状态:start slave;     show slave status\G

创建必要的用户

创建用户

SQL语句

创建复制用户gudongslave grant replication slave,replication client on *.* to xxslave identified by 'xxslave';
创建备份用户 grant all on *.* to backup identified by 'backup';

使用mysqldump搭建从库

适用于数据量小的情况。步骤如下:

  1. 主库执行mysqldump,导出整库:mysqldump -uroot -p  --set-gtid-purged=ON --all-databases --triggers --routines --events > all_db.sql
  2. 从库执行reset master命令:mysql -uroot -p -e "reset master;"
  3. 从库执行dump的SQL文件:mysql -uroot -p < all_db.sql
  4. 从库执行change master命令:CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='xxslave', MASTER_PASSWORD='gudongslave', MASTER_PORT=3306, MASTER_AUTO_POSITION=1;
  5. 从库启动复制,并观察复制状态:start slave;     show slave status\G

猜你喜欢

转载自blog.csdn.net/yujia_666/article/details/107327787