没有找到mysql。sock_mysql8基于gtid方式搭建主从或恢复

对于mysql8基于gtid方式搭建主从或恢复,看到网上写的太多了,但是效果太差劲,现给出落地步骤(按照我的一步步来保准没问题,具体操作原因不赘述--请参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/replication.html)

废话不多说,直接上实践步骤

前提说明

机器说明:

从库:10.5.31.9 10.5.31.10

主库:10.5.31.8

数据库数据目录/data/mysql/

数据库日志目录/mysqllog/

该文档基于已经建立的mysql8安装模板(已开启gtid、binlog功能)

以下步骤适用于主从搭建或恢复主从关系

从库上操作:10.5.31.9 10.5.31.10

reset master;

stop slave;

service mysqld stop

#删除从库上所有的数据

rm -fr /data/mysql/*

#清除mysql的所有日志,尤其是undo日志

rm -fr /mysqllog/*

注意:修改配置文件/etc/my.cnf中的server_id=211,主从不应一样,从库的值大于主库。

主库上操作(注意开启binlog日志和gtid功能,这里不多说,可以参考华阳的模板中的配置文件):10.5.31.8

#创建复制账号并授予replication slave权限

create user repl@'%' identified by '123456';

grant replication slave on *.* to repl@'%';

flush privileges;

#创建备份目录

mkdir /data/backup -p

#全备

xtrabackup -uroot -p1234.Com --socket=/data/mysql/mysql.sock --backup --target-dir=/data/backup --defualt-file=/etc/my.cnf

#拷贝数据到从库

scp -r /data/backup mysql@10.5.31.9:/data

scp -r /data/backup mysql@10.5.31.10:/data

以下步骤是在主库操作完毕后,在从库上操作:10.5.31.9 10.5.31.10

xtrabackup --prepare --target-dir=/data/backup --default-file=/etc/my.cnf

xtrabackup --copy-back --target-dir=/data/backup --default-file=/etc/my.cnf

登录主库,查看gtid号:10.5.31.8

show master status;

登录从库:10.5.31.9 10.5.31.10

change master to master_host='10.5.31.8',master_port=3306,master_user='repl',master_password='123456',master_auto_position=1;

set gtid_next='automatic';

set global read_only = on;

start slave;

show slave status\G;

显示两个yes,同时Retrieved_Gtid_Set和Executed_Gtid_Set正常即可。

主从热恢复,逻辑备份方式

主库上操作

mysqldump -uroot -p123456 --single-transaction --master-data=2 --socket=/data/mysql/mysql.sock -A > all.sql

--single-transaction 这个参数避免备份时锁表

--master-data=2 因为是基于gtid方案搭建主从,所以采用2,如果是基于binlog日志方案则使用1(记录位置点)

grep GLOBAL.GTID_PURGED all.sql --例如该结果为4a81e208-9f0f-11ea-8686-005056a5c812:1-1202,主要是找到事务号(因为从的事务号和当前备份的肯定是不一样的--主库一直在写数据,需要重新设定从的事务号)

scp ./all.sql 10.5.31.9:/data/

scp ./all.sql 10.5.31.10:/data/

从库上执行:

stop slave;

source /data/all.sql;

RESET MASTER;---将事务置为0,并重新设定事务号

set GLOBAL gtid_purged='4a81e208-9f0f-11ea-8686-005056a5c812:1-1202';

set global read_only = on;

start slave;

show slave status\G;

显示两个yes,同时Retrieved_Gtid_Set和Executed_Gtid_Set正常即可。

查看从库复制表是否有异常(无结果表示无异常,一般情况是符合预期的):select * from performance_schema.replication_applier_status_by_worker where LAST_ERROR_NUMBER>0\G;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
若要在 MySQL 8.0 的配置文件 my.cnf 中实现主从复制并使用 GTID 技术,可以按照以下方式进行配置: ``` [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock server-id = 1 gtid-mode = ON enforce-gtid-consistency = ON log-bin = mysql-bin binlog-format = ROW binlog-checksum = NONE basedir = /usr/local/mysql datadir = /usr/local/mysql/data log_error = /var/log/mysql/error.log character_set_server = utf8mb4 collation_server = utf8mb4_unicode_ci default_authentication_plugin = mysql_native_password innodb_buffer_pool_size = 128M innodb_log_file_size = 64M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 [mysql] default-character-set = utf8mb4 ``` 在 [mysqld] 部分,我们需要设置服务器的 ID (这里设置为 1),并开启 GTID 模式和强制 GTID 一致性。同时,我们需要开启二进制日志(log-bin),设置二进制格式为行格式(binlog-format)并关闭二进制日志校验(binlog-checksum)。 在主服务器上,我们需要在每个事务提交时自动写入 GTID,以便从服务器可以按照 GTID 顺序进行复制。在从服务器上,我们需要启用 GTID,以便在从主服务器获取数据时使用 GTID 进行同步。 此外,我们还可以根据实际情况配置 innodb_buffer_pool_size、innodb_log_file_size、innodb_flush_log_at_trx_commit、innodb_lock_wait_timeout 等参数,以优化数据库的性能。 需要注意的是,此配置文件只适用于主从复制的场景,如果您还需要配置其他的功能,可以根据具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值