2025年mysql主键(mysql主键的作用)

mysql主键(mysql主键的作用)MySQL 主主复制及相关的排坑 主主复制的本质就是 2 台 MySQL 服务器互为主从 但如此配置极易产生问题 如数据不一致导致主键的冲突 以及一些其他的错误 为了减少主键冲突的情况 可以考虑让两个节点的 id 分别使用技术和偶数 这就需要用到两个服务器选项来配置 auto increment offset 设置 id 的开始点 auto increment increment 设置 id 的步进 主主复制工作中不推荐使用 如确实需要使用 也将其当为主从来使用 主主复制的搭建




MySQL主主复制及相关的排坑

主主复制的本质就是2台MySQL服务器互为主从。

但如此配置极易产生问题,如数据不一致导致主键的冲突,以及一些其他的错误。

为了减少主键冲突的情况,可以考虑让两个节点的id分别使用技术和偶数,这就需要用到两个服务器选项来配置。

auto_increment_offset #设置id的开始点

auto_increment_increment #设置id的步进

主主复制工作中不推荐使用,如确实需要使用,也将其当为主从来使用。

主主复制的搭建

使用2台主机来配置主主复制

主机

ip

Master1

192.168.73.110

Master2

192.168.73.111

配置Master1

1.修改配置文件

2.启动MySQL服务

[root@Master1 ~]# systemctl start mariadb

3.查看二进制日志位置

4.创建一个用来复制数据的用户

[root@Master1 ~]# mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.73.%' IDENTIFIED BY 'centos';"

配置Master2为Master1的从节点

1.修改配置文件

2.设置CHANGE MASTER TO

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.73.110', MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_PORT=3306,MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=245;

Query OK, 0 rows affected (0.01 sec)

3.查看从节点状态,确认无误

4.启动线程

MariaDB [(none)]> START SLAVE;

Query OK, 0 rows affected (0.01 sec)

5.再次查看从节点状态

6.查看二进制日志位置

查看二级制日志位置用于,给Master1作为从节点使用。由于Master2上无数据二进制日志为干净日志,所以可以直接供Master1使用。

配置Master1为Master2的从节点

1.输入CHANGE MASTER TO的信息

CHANGE MASTER TO MASTER_HOST='192.168.73.111', MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_PORT=3306,MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=245;

2.查看从状态,确认信息无误

3.启动线程

MariaDB [(none)]> START SLAVE;

Query OK, 0 rows affected (0.01 sec)

4.再次查看slave status

主主复制搭建完毕

测试

测试一、查看Master1输入数据,Master2能否复制

1.从Master1上导入hellodb数据库

2.从节点上查看数据库

测试二、Master2插入数据查看Master1是否能复制

1.在Master2中插入条记录

2.在Master1上查看数据

测试三、两边同时创建一张相同的表

1.同时对两个主机做出创建表的操作

mysql id主键 数据类型_SQL

mysql id主键 数据类型_mysql id主键 数据类型_02

2.查看Master1的hellodb库

3.查看Master2的hellodb库

此处看上好像没问提

测试四、继续插入数据,从看看复制状况

1.在Master1上继续往hellodb.test表中插入数据

[root@Master1 ~]# mysql -e "INSERT hellodb.test VALUE(1,'Tang San');"

2.Master2上查看复制状况

[root@Master2 ~]# mysql

MariaDB [(none)]> SELECT * FROM hellodb.test;

Empty set (0.00 sec)

#没有复制到数据

查错

分别查看Master1和Master2主机上的SLAVE STATUS;

Master1状态

显示出来刚在在创建表时已经复制出错,由于两边同时创建了同一张表发生了冲突

排错

分别在主从节点上停止线程

MariaDB [(none)]> STOP SLAVE;

分别在主从节点上使用sql_slave_skip_counter忽略错误

MariaDB [(none)]> SET GLOBAL sql_slave_skip_counter=1;

分别在主从节点上再次启动线程

MariaDB [(none)]> START SLAVE;

再次在从节点上查test表

此时数据已经能正常复制过去

编程小号
上一篇 2025-03-11 17:01
下一篇 2025-02-27 09:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/16534.html