首页 > 其他分享 >主从复制及主主复制的实现

主从复制及主主复制的实现

时间:2023-10-08 10:01:44浏览次数:27  
标签:主从复制 mariadb log none 复制 master 及主主 sec MariaDB

#实现主从复制配置,官网参考
https://dev.mysql.com/doc/refman/8.0/en/replication-configuration.html
https://dev.mysql.com/doc/refman/5.7/en/replication-configuration.html
https://dev.mysql.com/doc/refman/5.5/en/replication-configuration.html
https://mariadb.com/kb/en/library/setting-up-replication/

#一、两台centos8安装mariadb10.3.28 实现主从复制

#主节点配置:
[root@Centos8 ~]##hostnamectl set-hostname master
[root@master ~]#yum install -y mariadb-server
[root@master ~]#vim /etc/my.cnf.d/mariadb-server.cnf

[mysqld]
log_bin
server-id=11

#设置开机自启并启动服务
[root@master ~]#systemctl --now enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.



#登录数据库
[root@master ~]#mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.28-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 |      343 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
#创建复制账号
MariaDB [(none)]> grant replication slave on *.* to 'repluser'@'10.0.0.%' identified by 'replpass';
Query OK, 0 rows affected (0.000 sec)
#刷新权限
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)
#查看二进制文件名称及位置,后面从节点会用到
MariaDB [(none)]> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000003 |      343 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
#退出数据库
MariaDB [(none)]> exit
Bye


#从节点配置:
[root@Centos8 ~]#hostnamectl set-hostname slave1
[root@slave1 ~]#yum install -y mariadb-server
[root@slave1 ~]#vim /etc/my.cnf.d/mariadb-server.cnf

[mysqld]
server_id=22
log-bin
read_only=ON
relay_log=relay-log
relay_log_index=relay-log.index

[root@slave1 ~]#systemctl --now enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

#使用有复制权限的用户账号连接至主服务器,并启动复制线程
[root@slave1 ~]#mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.28-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> change master to master_host='10.0.0.150',master_user='repluser',master_password='replpass',master_log_file='master-bin.000003',master_log_pos=343;
Query OK, 0 rows affected (0.002 sec)

#开始从节点复制
MariaDB [(none)]> start slave ;
Query OK, 0 rows affected (0.001 sec)
#查看从节点复制状态
MariaDB [(none)]> show slave status \G;
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 10.0.0.150
                   Master_User: repluser
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: master-bin.000003
           Read_Master_Log_Pos: 343
                Relay_Log_File: relay-log.000002
                 Relay_Log_Pos: 556
         Relay_Master_Log_File: master-bin.000003
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes    #出现这两个yes表示连接成功,配置成功




#说明,从节点配置错误,清除信息后检查从节点配置重新配置change master to
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> reset slave all;
Query OK, 0 rows affected (0.000 sec)

#验证主从复制
#主节点创建数据库
第一次查看数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)

主节点创建test111数据库
MariaDB [(none)]> create database test111;
Query OK, 1 row affected (0.000 sec)

#从节点查看是否同步
第一次查看数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)

在主节点创建test111数据库后,在从节点查看数据库,发现已经同步过来
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test111            |
+--------------------+
4 rows in set (0.000 sec)




#二、两台centos8安装mariadb10.3.28 实现主主复制
主主复制:两个节点,都可以更新数据,并且互为主从
容易产生的问题:数据不一致;因此慎用
考虑要点:自动增长id
配置一个节点使用奇数id
auto_increment_offset=1   #开始点
auto_increment_increment=2 #增长幅度
另一个节点使用偶数id
auto_increment_offset=2
auto_increment_increment=2
主主复制的配置步骤简述:
 (1) 各节点使用一个惟一server_id
 (2) 都启动binary log和relay log
 (3) 创建拥有复制权限的用户账号
 (4) 定义自动增长id字段的数值范围各为奇偶
 (5) 均把对方指定为主节点,并启动复制线程

主主复制的具体实现步骤:
#第一台mster节点
[root@master1 ~]#vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
log_bin
server-id=11
auto_increment_offset=1
auto_increment_increment=2

[root@master1 ~]#systemctl restart mariadb
[root@master1 ~]#mysql
MariaDB [(none)]> show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin.000001 |      330 |              |                  |
+--------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| master1-bin.000001 |       330 |
+--------------------+-----------+
1 row in set (0.000 sec)
#说明,如果是先查看在创建复制账号,则下面的创建账号信息不会同步到从节点。如果先创建的复制账号,再查看的二进制文件位置,则会把账号创建也复制过去。
MariaDB [(none)]> grant replication slave on *.* to 'repluser'@'*' identified by 'replpass';
MariaDB [(none)]>flush privileges;



#第二台master节点
[root@master2 ~]#vim  /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server_id=22
log-bin
auto_increment_offset=2
auto_increment_increment=2
[root@master2 ~]#systemctl restart mariadb
[root@master2 ~]#mysql
MariaDB [(none)]> change master to master_host='10.0.0.150',master_user='repluser',master_password='replpass',master_log_file='master1-bin.000001',master_log_pos=330;
Query OK, 0 rows affected (0.011 sec)

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

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

#因上面没有先创建复制用户再查看二进制文件位置,所以创建账号这步没有同步过来,因此这台也要创建复制账号。
MariaDB [(none)]>grant replication slave on *.* to 'repluser'@'*' identified by 'replpass';
MariaDB [(none)]>flush privileges;

#回到第一台master节点
因为第一台的复制账号信息已经同步到第二台机器,因此有复制账号了,直接配置change master to 

MariaDB [(none)]> change master to master_host='10.0.0.160',master_user='repluser',master_password='replpass',master_log_file='master2-bin.000001',master_log_pos=913;
Query OK, 0 rows affected (0.014 sec)
#启动复制线程
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)

#验证
#第一台
MariaDB [(none)]> create database d111;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| d111               |
| d222               |
| information_schema |
| mysql              |
| performance_schema |
| t1                 |
| test111            |
+--------------------+
7 rows in set (0.000 sec)

#第二台
MariaDB [(none)]> create database d222;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| d111               |
| d222               |
| information_schema |
| mysql              |
| performance_schema |
| t1                 |
| test111            |
+--------------------+
7 rows in set (0.000 sec)

标签:主从复制,mariadb,log,none,复制,master,及主主,sec,MariaDB
From: https://www.cnblogs.com/tanll/p/17748199.html

相关文章

  • VMware与Windows主机之间复制粘贴
    其实就是安装VMwareTools,但不知道为什么我的VMwareWorkstation不能安装VMwareTools,记得之前有次安装过,但是失败了。基于apt-get命令下载安装其实是更好的选择:sudoapt-getinstallopen-vm-toolssudoapt-getinstallopen-vm-tools-desktop安装成功后重启VMware虚拟机即......
  • mariadb主从复制及主主复制的实现
     #实现主从复制配置,官网参考https://dev.mysql.com/doc/refman/8.0/en/replication-configuration.htmlhttps://dev.mysql.com/doc/refman/5.7/en/replication-configuration.htmlhttps://dev.mysql.com/doc/refman/5.5/en/replication-configuration.htmlhttp......
  • 【RocketMQ】Dledger模式下的日志复制
    RocketMQ在开启Dledger时,使用DLedgerCommitLog,其他情况使用的是CommitLog来管理消息的存储。在Dledger模式下,消息写入时Leader节点还需要将消息转发给Follower节点,有过半的节点响应成功,消息才算写入成功。Leader消息写入Dledger下有DLedgerMemoryStore(基于内存存储)和DLedgerMmap......
  • 多线程文件复制,断点继续复制
    ​1、思路多线程首先要对文件进行分割,这里使用每个子线程的任务大小固定的方法,根据文件大小分配不同数量的子线程。要实现断点下载,必须要记录已经复制的位置,每次继续时从上次下载的结束位置继续复制,这里将已经复制的文件位置以long类型写入一个日志文件,继续下载时每个线程从对......
  • Ubuntu 中 vim 无法把内容复制到外部程序的解决方案
    检查vim是否把内容复制到剪贴板中这一功能$vim--version|grepclipboard情况大概有这么2种:情况1+clipboard:支持系统剪贴板,只需要在visual可视模式下选中要复制的内容之后按y键即可复制到剪贴板,然后到外部程序中粘贴即可情况2-clipboard:不支持系统剪贴板如何解决......
  • Debian12 vim中鼠标不能复制解决办法
    前奏rambo@debian:~$cat/etc/issueDebianGNU/Linux12\n\l解决#没有该文件则新建rambo@debian:~$sudovim/etc/vim/vimrcletskip_defaults_vim=1ifhas('mouse')setmouse-=aendif#保存并退出,一切都将恢复如果不想更改全局配置,应将这些更改放......
  • redis主从复制基础上搭建哨兵模式
    假如156和157是不同的两台服务器两台redis主从复制基础上搭建哨兵模式如下156redis.confmasterauth123456bind0.0.0.0requirement123456daemonizeyessentinel.confsentinelauth-passmymaster123456sentinelmonitormymaster10.190.107.15663792157......
  • 支持复制粘贴进行翻译的chrome浏览器插件
    下载安装https://chrome.google.com/webstore/detail/translator-dictionary-acc/bebmphofpgkhclocdbgomhnjcpelbenh/related?hl=zh-CN界面设置常用语言历史记录......
  • win10的 VM虚拟机不能拖文件、复制粘贴问题
    解决虚拟机和win10之间不能拖动文件,复制文件,共享剪切板问题;sudoapt-getautoremoveopen-vm-toolssudoapt-getinstallopen-vm-toolssudoapt-getinstallopen-vm-tools-desktop然后重启!参考:https://blog.csdn.net/davidhzq/article/details/101621482......
  • 读高性能MySQL(第4版)笔记17_复制(下)
    1. 复制切换1.1. 复制是高可用性的基础1.1.1. 总是保留一份持续更新的副本数据,会让灾难恢复更简单1.2. “切换副本”(promotingareplica)和“故障切换”(failingover)是同义词1.2.1. 意味着源服务器不再接收写入,并将副本提升为新的源服务器1.3. 计划内切换1.3.1. 常......