数据库集群的级联复制完整实现

author author     2022-10-25     153

关键词:

实验前的注意:

如果要启用级联复制,需要在从服务器启用以下配置;

[mysqld]
log_bin
log_slave_updates

log_slave_updates的作用:
    因为默认从主服务器过来的二进制日志保存在从服务器的中继日志;并应用到本地数据库;
    但是中间这个从服务器是即便是开启二进制日志的记录功能,他也是不记录到本地的二进制日志,
    那么也就不能将对数据库的操作再传输到从的从服务器上去。当log_slave_updates启用后,
    从服务器也就能将对主服务器的二进制日志在本地执行后,也记录到自己的二进制日志中;


删除数据库就可以干净做实验;
[[email protected] ~]$systemctl stop mariadb
[[email protected] ~]$rm -fr /var/lib/mysql/*
[[email protected] ~]$systemctl start mariadb


主、从、二级从服务器的配置:

[[email protected] ~]$cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_file_per_table
log_bin
server-id=1

[[email protected] ~]$cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
innodb_file_per_table
server_id=2
read_only
log_bin
log_slave_updates

[[email protected] ~]$cat  /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server_id=3



主服务器和从服务器实现主从复制,配置和授权:

主服务器:
MariaDB [(none)]> grant replication slave on *.* to [email protected]'192.168.27.%' identified by 'centos';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       264 |
| mariadb-bin.000002 |       401 |
+--------------------+-----------+
2 rows in set (0.00 sec)



中间的从服务器:
CHANGE MASTER TO
MASTER_HOST='192.168.27.7',
MASTER_USER='repluser',
MASTER_PASSWORD='centos',
MASTER_LOG_FILE='mariadb-bin.000001',
MASTER_LOG_POS=245;

MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.27.7',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='centos',
    -> MASTER_LOG_FILE='mariadb-bin.000001',
    -> MASTER_LOG_POS=245;
Query OK, 0 rows affected (0.02 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.27.7
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000002
          Read_Master_Log_Pos: 401
               Relay_Log_File: mariadb-relay-bin.000003
                Relay_Log_Pos: 687
        Relay_Master_Log_File: mariadb-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
         Exec_Master_Log_Pos: 401
              Relay_Log_Space: 1269
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0

MariaDB [(none)]> select user from mysql.user;
+----------+
| user     |
+----------+
| root     |
| repluser |
| root     |
|          |
| root     |
|          |
| root     |
+----------+
7 rows in set (0.00 sec)



MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       401 |
+--------------------+-----------+
1 row in set (0.00 sec)


二级从服务器上的配置:

在从的从服务器上执行:

[mysqld]
innodb_file_per_table
read-only
server-id=3


CHANGE MASTER TO
MASTER_HOST='192.168.27.17',
MASTER_USER='repluser',
MASTER_PASSWORD='centos',
MASTER_LOG_FILE='mariadb-bin.000001',
MASTER_LOG_POS=401;

基于json的级联列表实现

基于JSON的级联列表实现1、采用JSON格式存储相应的数据;省份ProJSON,城市:cityJSON;varproJSON={"1":"广东省","2":"湖北省"};varcityJSON={"1":{‘020‘:‘广州‘,‘0755‘:‘深圳‘,‘0756‘:‘珠海‘},‘2‘:{‘027‘:‘武汉‘,‘0710‘:‘襄樊‘,... 查看详情

mybatis级联(代码片段)

   级联是一个数据库实体的概念。一对多的级联,一对多的级联,在MyBatis中还有一种被称为鉴别器的级联,它是一种可以选择具体实现类的级联。  级联不是必须的,级联的好处是获取关联数据十分便捷,但是级联过... 查看详情

关于数据的级联删除和更新

...; 在MySQL中利用外键实现级联删除 创建以下测试用数据库表:CREATETABLE`roottb`(  `id`INT( 查看详情

数据库集群的主从复制模型完整实现

主从配置过程:参看:    https://mariadb.com/kb/en/library/setting-up-replication/    https://dev.mysql.com/doc/refman/5.5/en/replication-configuration.html主服务器192.168.27. 查看详情

基于elementui的级联选择器组件实现的分类后台接口(代码片段)

  今天在做资产管理系统的时候遇到一个分类的级联选择器,前端是用的element的组件,需要后台提供接口支持。          这个组件需要传入的数据结构大概是这样的,详细的可参考官方案例:[v... 查看详情

如何实现关系表的级联删除(ondeletecascade的用法)

以下面两张表为例:SQL>descperson 名称                           &nbs 查看详情

SQL中的级联菱形删除

...SQL【发布时间】:2016-05-2308:17:02【问题描述】:如果我的数据库中有一个简单的User表和一个以User.id作为外键的简单Item表:(idUNIQUEIDENTIFIERDEFAULT(NEWID())NOTNULL,nameNVARCHAR(MAX)NULL,emailNVARCHAR(128)NULL,auth 查看详情

vue中使用elementui的级联选择器el-cascader实现动态加载

参考技术A地点选择功能,省市区选择动态加载下一级。引入elementUI省略,自行查看文档。html部分js部分 查看详情

android房间数据库KOTLIN中的级联删除

】android房间数据库KOTLIN中的级联删除【英文标题】:cascadedeleteinandroidroomdatabaseKOTLIN【发布时间】:2022-01-0502:22:54【问题描述】:***中有很多这样的问题,但大部分都不是关于房间数据库的,所以我不得不问一个新问题。我有一... 查看详情

JPA Hibernate - 数据库和注释中的级联删除

】JPAHibernate-数据库和注释中的级联删除【英文标题】:JPAHibernate-cascadedeleteinbothdatabaseandannotation【发布时间】:2014-04-1218:11:58【问题描述】:简介我想知道我应该怎么做,因为我已经阅读了许多试图理解这一点的文章,包括许多... 查看详情

12.创建关系时的级联操作

---创建关系时的级联操作altertablestudentwithnocheck--不检查现有数据addconstraintFK_Grade_Student_GradeIdforeignkey(gradeid)referencesgrade(gradeid)ondeletesetnull--[ONDELETE{NOACTION|CASCADE|SETNULL|SETDEFAULT}]--on-- 查看详情

关于数据的级联删除和更新

很多时候,我们会碰到这样的场景:“删除一个表的数据的时候,将另一个表的相关数据删除。” 在这里我建立两张表:“ProductCategory”,“Product”.有一个需求是这样的:在删除某个ProductCategory的时候,同时删除该Category... 查看详情

休眠 - 多对多关系中的级联删除

...】:我有一个springmvc应用程序,它使用hibernate来处理mysql数据库。我有acl和acl_group表。这两个表与连接表有ManytoMany关系。下面是实体类的结构:Acl:publicclassAclimplements 查看详情

KendoUI - 使用 MVVM 和远程数据时的级联下拉列表

】KendoUI-使用MVVM和远程数据时的级联下拉列表【英文标题】:KendoUI-CascadingDropdownlistwhenusingMVVMandRemoteData【发布时间】:2013-08-0821:48:56【问题描述】:我有一个KendoUI下拉列表,它从Web服务中获取数据,根据所选项目填充第二个下... 查看详情

js基于json的级联下拉框

...引玉吧。<html><scripttype="text/javascript">/**基于json的级联下拉列表,支持初始化调用eg:varcomboselect=ComboSelectFactory(data,‘p1‘,‘ 查看详情

student表中创建触发器,实现student表和student_course表的级联删除

createtriggerDelete_sconstudentfordeleteasdeletestudent_coursewherestudent_course.s_noin(selects_nofromdeleted)  查看详情

oracle数据库的级联查询(代码片段)

...果香蕉水果电器top冰箱电器洗衣机电器电视电器西瓜水果数据库存储的数据为无序的,需求描述为按照水果--属于水果的二级--电器--数据电器的二级方式进行数据排序解决方案SQL>select*fromwenstartwithfather='top'connectbyp... 查看详情

如何覆盖 Grails GORM 中关系的级联删除?

...GORM部分时遇到了一些问题。我正在使用Grails1.3.4和H2。在数据库中,我有两个表template和report。在GORM级别上,我有两个域类Template和Repor 查看详情