幸运蛋蛋pc开奖
這篇文章主要詳細介紹了mariadb的主從復制、主主復制、半同步復制的概念和方法,有需要的小伙伴可以參考下

主從服務器的時間要同步,數據庫版本最好是一致的,以免造成函數處理、日志讀取、日志解析等發生異常。

以下三個主從復制的設置是獨立的。

注意防火墻和selinux的影響。

1、簡單主從復制的實現

(1)主服務器的配置

1)安裝mariadb-server

[[email protected] ~]# yum -y install mariadb-server

2)編輯/etc/my.cnf文件

[[email protected] ~]# vim /etc/my.cnf

在[mysqld]段的最后添加以下內容

skip_name_resolve = ON innodb_file_per_table = ON server-id = 1 (id號不能跟從服務器相同) log-bin = master-log (自定義二進制日志文件名)

3)授權可以復制本地數據庫信息的主機

[[email protected] ~]# systemctl start mariadb.service (啟動mariadb server)[[email protected] ~]# mysqlMariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'10.1.51.%' identified by 'replpasswd';MariaDB [(none)]> flush privileges;MariaDB [(none)]> show master status\G (查看主服務器的狀態信息,在從服務器中要用到)
*************************** 1. row ***************************File: master-log.000003 (正在使用的二進制日志文件)Position: 497 (所處的位置)Binlog_Do_DB:Binlog_Ignore_DB:

(2)從服務器的配置

1)安裝mariadb-server

[[email protected] ~]# yum -y install mariadb-server

2)編輯/etc/my.cnf文件

[[email protected] ~]# vim /etc/my.cnf

在[mysqld]段的最后添加以下內容

skip_name_resolve = ON innodb_file_per_table = ON server-id = 2 (id號不能跟主服務器相同) relay-log = slave-log (自定義二進制日志文件名)

3)設置要從哪個主服務器的那個位置開始同步

[[email protected] ~]# systemctl start mariadb.service[[email protected] ~]# mysqlMariaDB [(none)]> change master to master_host='10.1.51.60',master_user='repluser',master_password='replpasswd',master_log_file='master-log.000003',master_log_pos=497;MariaDB [(none)]> start slave; (啟動復制功能)
MariaDB [(none)]> show slave status\G (查看從服務器的狀態,下面顯示的是部分內容)Master_Host: 10.1.51.60Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-log.000003Read_Master_Log_Pos: 497Relay_Log_File: slave-log.000002Relay_Log_Pos: 530Relay_Master_Log_File: master-log.000003Slave_IO_Running: YesSlave_SQL_Running: YesMaster_Server_Id: 1

(3)測試

1)在主服務器導入事先準備好的數據庫

[[email protected] ~]# mysql < hellodb.sql

2)在從服務器查看是否同步

MariaDB [(none)]> show databases;
+--------------------+
| Database|
+--------------------+
| information_schema |
| hellodb|(數據庫已經同步)
| mysql|
| performance_schema |
| test|
+--------------------+
MariaDB [(none)]> use hellodb;
MariaDB [hellodb]> show tables; (hellodb數據庫的表也是同步的)
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes|
| coc|
| courses|
| scores|
| students|
| teachers|
| toc|
+-------------------+

2、雙主復制的實現

(1)服務器1的配置

1)安裝mariadb-server

[[email protected] ~]# yum -y install mariadb-server

2)編輯/etc/my.cnf文件

[[email protected] ~]# vim /etc/my.cnf

在[mysqld]段的最后添加以下內容

skip_name_resolve = ON innodb_file_per_table = ON server-id = 1 (id號不能跟從服務器相同) log-bin = master-log (自定義主服務器的二進制日志文件名) relay-log = slave-log (自定義從服務器的二進制日志文件名) auto_increment_offset = 1 auto_increment_increment = 2

3)在服務器2上查看的master狀態

MariaDB [(none)]> show master status\G
*************************** 1. row ***************************File: master-log.000003Position: 422Binlog_Do_DB:Binlog_Ignore_DB:

4)啟動mariadb server并進行如下配置

[[email protected] ~]# systemctl start mariadb.service[[email protected] ~]# mysqlMariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'10.1.51.%' identified by 'replpasswd';MariaDB [(none)]> change master to master_host='10.1.51.50',master_user='repluser',master_password='replpasswd',master_log_file='master-log.000003',master_log_pos=422;MariaDB [(none)]> start slave;MariaDB [(none)]> SHOW SLAVE STATUS\G (僅是部分內容)Master_Host: 10.1.51.50Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-log.000003Read_Master_Log_Pos: 422Relay_Log_File: slave-log.000002Relay_Log_Pos: 530Relay_Master_Log_File: master-log.000003Slave_IO_Running: YesSlave_SQL_Running: YesMaster_Server_Id: 2

(2)服務器2的配置

1)安裝mariadb-server

[[email protected] ~]# yum -y install mariadb-server

2)編輯/etc/my.cnf文件

[[email protected] ~]# vim /etc/my.cnf skip_name_resolve = ON innodb_file_per_table = ON server-id = 2 relay-log = slave-log lob-bin = master-log auto_increment_offset = 2 auto_increment_increment = 2

3)在服務器1查看master狀態

MariaDB [(none)]> show master status\G *************************** 1. row *************************** File: master-log.000003 Position: 245 Binlog_Do_DB: Binlog_Ignore_DB:

4)啟動mariadb server并配置

[[email protected] ~]# systemctl start mariadb.service[[email protected] ~]# mysqlMariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'10.1.51.%' identified by 'replpasswd';MariaDB [(none)]> change master to master_host='10.1.51.60',master_user='repluser',master_password='replpasswd',master_log_file='master-log.000003',master_log_pos=245;MariaDB [(none)]> start slave;MariaDB [(none)]> show slave status\G (僅是部分內容)Master_Host: 10.1.51.60Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-log.000003Read_Master_Log_Pos: 422Relay_Log_File: slave-log.000003Relay_Log_Pos: 530Relay_Master_Log_File: master-log.000003Slave_IO_Running: YesSlave_SQL_Running: YesMaster_Server_Id: 1

(3)測試

1)在任意一臺服務器上創建mydb數據庫

MariaDB [(none)]> create database mydb;

2)在另一臺服務器上查看

MariaDB [(none)]> show databases;
+--------------------+
| Database|
+--------------------+
| information_schema |
| mydb|
| mysql|
| performance_schema |
| test|
+--------------------+

3、半同步復制的實現

(1)在主服務器上的配置

1)安裝mariadb-server

[[email protected] ~]# yum -y install mariadb-server

2)編輯/etc/my.cnf

[[email protected] ~]# vim /etc/my.cnf skip_name_resolve = ON innodb_file_per_table = ON server-id = 1 log-bin = master-log

3)授權可以復制本地數據庫信息的主機

[[email protected] ~]# systemctl start mariadb.service (啟動mariadb server)[[email protected] ~]# mysqlMariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'10.1.51.%' identified by 'replpasswd';MariaDB [(none)]> flush privileges;MariaDB [(none)]> show master status\G (查看主服務器的狀態信息,在從服務器中要用到)
*************************** 1. row ***************************File: master-log.000003 (正在使用的二進制日志文件)Position: 245 (所處的位置)Binlog_Do_DB:Binlog_Ignore_DB:

4)安裝rpl semi sync_master插件,并啟用

[[email protected] ~]# mysqlMariaDB [(none)]> install plugin rpl_semi_sync_master soname 'semisync_master.so';
MariaDB [(none)]> set global rpl_semi_sync_master_enabled = ON;

補充:

MariaDB [(none)]> show plugins;(可查看插件是否激活) MariaDB [(none)]> show global variables like 'rpl_semi%';(可查看安裝的插件是否啟用) MariaDB [(none)]> show global status like '%semi%';(可查看從服務器的個數,此時是0個)

(2)從服務器的配置

1)安裝mariadb-server

[[email protected] ~]# yum -y install mariadb-server

2)編輯/etc/my.cnf文件

[[email protected] ~]# vim /etc/my.cnf

在[mysqld]段的最后添加以下內容

skip_name_resolve = ON innodb_file_per_table = ON server-id = 2 (id號不能跟主服務器相同) relay-log = slave-log (自定義二進制日志文件名)

3)設置要從哪個主服務器的那個位置開始同步

[[email protected] ~]# systemctl start mariadb.service[[email protected] ~]# mysqlMariaDB [(none)]> change master to master_host='10.1.51.60',master_user='repluser',master_password='replpasswd',master_log_file='master-log.000003',master_log_pos=245;

4)安裝rpl semi sync_slave插件并啟用

[[email protected] ~]# mysqlMariaDB [(none)]> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';MariaDB [(none)]> set global rpl_semi_sync_slave_enabled = ON;MariaDB [(none)]> start slave;

完成上面配置后,可以在主服務器上查看半同步復制的相關信息,命令如下:

MariaDB [(none)]> show global status like '%semi%';Rpl_semi_sync_master_clients 1 (從服務器有一臺)

(3)測試

測試以個人實際情況而定 1)在主服務器上導入事先準備好的數據庫hellodb.sql

MariaDB [hellodb]> source /root/hellodb.sql;

2)在主服務器上查看半同步復制的狀態

MariaDB [hellodb]> show master status;
+-------------------+----------+--------------+------------------+
| File| Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000003 |8102 |||
+-------------------+----------+--------------+------------------+MariaDB [hellodb]> show global status like '%semi%';
+--------------------------------------------+-------+
| Variable_name| Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients| 1|
| Rpl_semi_sync_master_net_avg_wait_time| 1684 |
| Rpl_semi_sync_master_net_wait_time| 60630 |
| Rpl_semi_sync_master_net_waits| 36 |
| Rpl_semi_sync_master_no_times| 1|
| Rpl_semi_sync_master_no_tx| 1|
| Rpl_semi_sync_master_status| ON |
| Rpl_semi_sync_master_timefunc_failures| 0|
| Rpl_semi_sync_master_tx_avg_wait_time| 1884 |
| Rpl_semi_sync_master_tx_wait_time| 65965 |
| Rpl_semi_sync_master_tx_waits| 35 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0|
| Rpl_semi_sync_master_wait_sessions| 0|
| Rpl_semi_sync_master_yes_tx| 35 |
+--------------------------------------------+-------+

3)在從服務器上查看是否同步

MariaDB [(none)]> show databases;
MariaDB [(none)]> use hellodb;
MariaDB [hellodb]> select * from students;

補充:基于上面的半同步復制配置復制的過濾器,復制過濾最好在從服務器上設置,步驟如下

(1)從服務器的配置

1)關閉mariadb server

[[email protected] ~]# systemctl stop mariadb.service

2)編輯/etc/my.cnf文件

[[email protected] ~]# vim /etc/my.cnfskip_name_resolve = ONinnodb_file_per_table = ONserver-id = 2relay-log = slave-logreplicate-do-db = mydb (只復制mydb數據庫的內容)

補充:常用的過濾選項如下

Replicate_Do_DB= Replicate_Ignore_DB= Replicate_Do_Table= Replicate_Ignore_Table= Replicate_Wild_Do_Table= Replicate_Wild_Ignore_Table=

3)重啟mariadb server

[[email protected] ~]# systemctl start mariadb.service

4)重啟mariadb server后,半同步復制功能將被關閉,因此要重新啟動

MariaDB [(none)]> show global variables like '%semi%';
+---------------------------------+-------+
| Variable_name| Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled| OFF |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+MariaDB [(none)]> set global rpl_semi_sync_slave_enabled = ON;
MariaDB [(none)]> stop slave;(需先關閉從服務器復制功能再重啟)
MariaDB [(none)]> start slave;

(2)測試

1)主服務器上的hellodb數據庫創建一個新表semitable

MariaDB [hellodb]> create table semitable (id int);

2)在從服務器上查看hellodb數據庫是否有semitable

MariaDB [(none)]> use hellodb
MariaDB [hellodb]> show tables;(并沒有)
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes|
| coc|
| courses|
| scores|
| students|
| teachers|
| toc|
+-------------------+

3)在主服務器上創建mydb數據庫,并為其創建一個tbl1表

MariaDB [hellodb]> create database mydb;

4)在從服務器上查看mydb數據庫的是否有tbl1表

MariaDB [hellodb]> use mydb;
MariaDB [mydb]> show tables; (可以查看到)
+----------------+
| Tables_in_mydb |
+----------------+
| tbl1|
+----------------+
最新資訊
暴風集團:存在無法在法定期內披露2019年度報告風險

暴風集團:存在無法在

暴風集團發布公告稱,截至目前,公司尚未聘請首席財務官和
拼多多通過收購獲支付牌照? 回應:不予置評

拼多多通過收購獲支付

針對網傳“拼多多正式收購付費通獲得支付牌照”一事,拼
中興通訊:本次非公開發行股票將于2020年2月3日上市

中興通訊:本次非公開

中興通訊發布公告稱,本次非公開發行股票將于2020年2月3
特斯拉市值超千億 馬斯克領取首份工資

特斯拉市值超千億 馬

特斯拉市值超過千億美元,也標志著特斯拉CEO馬斯克即將
華為開發者大會2020因疫情延期至3月:以直播呈現

華為開發者大會2020因

華為官方宣布,基于新型冠狀病毒感染的肺炎疫情防控形勢
韻達速遞:將對抵達武漢的快件和車輛進行消毒

韻達速遞:將對抵達武漢

韻達發布公告稱,將在武漢及寄達地處理中心對快件與車輛
最新文章
Windows10系統下安裝MariaDB 的教程圖解

Windows10系統下安裝M

MariaDB由MySQL的創始人麥克爾&#183;維德紐斯主導開發
Exchange在接收連接器上啟用匿名中繼的方法

Exchange在接收連接器

這篇文章主要介紹了Exchange在接收連接器上啟用匿名中
我是如何用2個Unix命令給MariaDB SQL提速的

我是如何用2個Unix命

我試圖在 MariaDB(MySQL)上運行一個簡單的連接查詢,但性
Window7安裝MariaDB數據庫及系統初始化操作分析

Window7安裝MariaDB數

這篇文章主要介紹了Window7安裝MariaDB數據庫及系統初
Windows Server 2016 服務器配置指南 之 MariaDB數據庫環境搭建方法

Windows Server 2016

這篇文章主要介紹了Windows Server 2016 服務器配置指
CentOS 7中成功安裝MariaDB的方法教程

CentOS 7中成功安裝Ma

這篇文章主要給大家介紹了CentOS 7中成功安裝MariaDB
幸运蛋蛋pc开奖 香港赛马会6肖 排球 福建22选5 江西快三玩法介绍 北京赛车稳赚绝密公式 广东时时彩几点开盘 老k棋牌游戏下载安装 六合图库彩色看图区 永利棋牌最新官方app下载 云南今日彩票中奖吗