在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

MySQL 中怎么创建复制用户

116次阅读
没有评论

共计 2582 个字符,预计需要花费 7 分钟才能阅读完成。

今天就跟大家聊聊有关 MySQL 中怎么创建复制用户,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

场景 1:仅在主库创建复制用户

1. 主库做一个备份并拷贝到从库

/usr/local/mysql5732/bin/mysqldump --single-transaction --master-data=2 -B zlm -S /tmp/mysql3332.sock -p   zlm.sql scp zlm.sql [email protected]:~

2. 登陆从库执行导入

mysql  source zlm.sql

由于没有使用参数 –set-gtid-purged=off,导出的语句中会带有 SET @@GLOBAL.GTID_PURGED= xxxx:1-xx 并执行,导入前需要先在从库上执行 reset master。

3. 主库创建复制用户

mysql  create user repl1 identified by  repl1

4. 从库配置主从复制并启动

mysql  change master to master_host= 10.186.60.62 ,master_port=3332,master_user= repl1 ,master_password= repl1 ,master_auto_position=1; mysql  start slave;

启动复制后,报了 Error 1045 的错误,此处并不是密码错,而是没有给复制用户配置 replication slave 权限,在主库上对 repl1 用户执行赋权后 (grant replication slave on *.* to repl1;),再启动复制就正常了。

主从复制正常以后,也会在从库上创建复制用户 repl1。

从库上并没有创建过复制用户 repl1,主从复制就正常搭建好了,为什么呢? 因为 change master to 语句中指定的 master_user 是主库上的复制用户,从库通过这个用户连接到主库进行同步,当开启复制线程后,主库上创建复制用户的语句会在从库上进行回放,于是从库上也会有这个复制用户了。

结论 1

搭建主从复制时,在从库创建复制用户不是必须的,仅在主库创建即可,复制用户会同步到从库。

场景 2:主从库单独创建复制用户 (create 语句)

1. 主库做一个备份并拷贝到从库 (gtid_purged=xxxx:1-23)

2. 从库执行导入

3. 主库创建复制用户并赋权

mysql  create user repl2 identified by  repl2  mysql  grant replication slave on *.* to repl2;

4. 从库创建复制用户

由于不想在从库上产生由从库 uuid 写入的 binlog 事务,此处设置了 sql_log_bin=0,使事务不被记录到 binlog 中,原因是在数据库管理平台对高可用集群进行管理时,通常是不允许从库上有主库不存在的 GTID 事务的。

5. 从库配置主从复制并启动

mysql  change master to master_host= 10.186.60.62 ,master_port=3332,master_user= repl2 ,master_password= repl2 ,master_auto_position=1; mysql  start slave;

由于从库上已经创建了复制用户,当回放到主库的这个事务时会报 Error 1396 的错误。

可以用 create user 语句创建一个重复用户来验证。

解析主库 binlog,启动复制后执行的第一个事务就是这个 24 的创建用户语句。

结论 2

在从库导入备份后并分别在主、从库单独创建复制用户后,当从库执行到创建用户的事务时会导致复制中断。

场景 3:主从库单独创建复制用户 (grant 语句)

1. 主库做一个备份并拷贝到从库 (gtid_purged=xxxx:1-28)

2. 从库执行导入

3. 主库创建复制用户

mysql  grant replication slave on *.* repl3 identified by  repl3

4. 从库创建复制用户

5. 从库配置主从复制并启动

mysql  change master to master_host= 10.186.60.62 ,master_port=3332,master_user= repl2 ,master_password= repl2 ,master_auto_position=1; mysql  start slave;

这次启动复制后并没有报错。为何用 grant 语句创建用户就可以,用 create 语句就不行呢?

create 与 grant 语句都会产生事务并记录到 binlog 中,但区别是 grant 语句是一个近似幂等的操作,而 create 语句不是。

解析主库 binlog,29 和 30 都是重复执行 grant 的事务。

MySQL 中怎么创建复制用户

观察 show slave stauts\G,从库上也把 29,30 这两个事务都回放掉了,重复执行它们并不影响主从复制。

MySQL 中怎么创建复制用户

但要注意的是,在 MySQL 8.0 中已经禁止通过 grant 这种语法来创建用户了。

MySQL 中怎么创建复制用户 结论 3

从库导入备份并在主从库分别使用 grant 语句创建用户后,在从库回放时不会导致复制中断。

总结

1. 根据以上验证结果得知,在搭建主从复制时,采用多种方式创建复制用户都是可行的,但有些方式存在一些限制,如:在主、从实例上分别创建复制用户。虽然执行 grant 语句创建用户不会导致复制中断,但其并不是标准的 MySQL 创建用户语法,在 MySQL 8.0 中已被视为语法错误,因此不推荐采用这样的方式来搭建主从。

2. 创建复制用户的方式

Create 语句创建用户时

1. 主库创建完复制用户后做备份,再配置主从

2. 备份后仅在主库创建复制用户,再配置主从 (推荐)

3. 如果要在主、从库分别创建复制用户,应先设置 session 级别的 sql_log_bin=0,再配置主从

Grant 语句创建用户时 (MySQL 5.7 及以下版本)

1. 主库先创建复制用户后备份,再配置主从

2. 仅在主库创建复制用户,再配置主从 (推荐)

3. 主、从库分别创建复制用户,再配置主从

看完上述内容,你们对 MySQL 中怎么创建复制用户有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计2582字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产太嫩了在线观看 | 在线观看亚洲人成网站 | 欧美大片aaaa一级毛片 | 亚洲欧美自拍视频 | 九九99热久久精品在线6手机 | 20201精品极品国产色在线 | 黄色大片在线视频 | 黑巨茎大战俄罗斯美女 | 亚洲第一性网站 | 91精品国产综合久久久久 | 午夜网站免费版在线观看 | 中文字幕亚洲综合久久菠萝蜜 | 韩国三级在线观看久 | 国产在线观看网址你懂得 | 青青草免费在线视频 | 午夜熟女插插xx免费视频 | 日韩精品一区二区在线观看 | 极品女神西比尔久久精品 | 精品小视频 | 午夜网站入口 | 日本特级黄毛片毛片视频 | 国产麻豆媒一区一区二区三区 | 四川50岁熟妇大白屁股真爽 | 国产日韩精品一区二区三区 | 午夜黄色网 | 青青青青青国产免费观看 | 一区二区三区国产美女在线播放 | 韩国精品一区二区 | 国产精品一区亚洲一区天堂 | 五月天香蕉 | 国产成人综合亚洲亚洲欧美 | 久操视频网 | 亚洲av中文无码乱人伦在线观看 | 99热这里只有精品在线观看 | 风流老熟女一区二区三区 | 欧美人与性动交ccoo | 亚偷熟乱区视频在线观看 | 国产手机精品自拍视频 | 在线视频一区二区 | 亚洲精品国产精品国自产观看 | 色一情一乱一伦一区二区三区 |