CentOS 7.6安裝配置MariaDB雙主模型複製

1、雙主模型複製:兩個節點互爲主從,都可讀寫。mysql


2、配置雙主模型複製:sql

一、演示環境:數據庫

IPvim

操做系統服務器

數據庫版本socket

安裝方式ide

角色測試

192.168.1.145spa

CentOS   7.6 x86_64操作系統

MariaDB-10.3.15

yum

master1

192.168.1.146

CentOS   7.6 x86_64

MariaDB-10.3.15

yum

master2

二、兩個節點的服務器時間同步

三、master1修改server.cnf配置文件:# vim /etc/my.cnf.d/server.cnf

[mysqld]

port=3306

socket=/var/lib/mysql/mysql.sock

datadir=/var/lib/mysql

log_error=/var/log/mariadb.log

lower_case_table_names=1

character_set_server=utf8mb4

collation_server=utf8mb4_general_ci

innodb_file_per_table=1

skip_name_resolve=1

slow_query_log=1

slow_query_log_file=mariadb-slow.log

log_bin=master1-bin

log_bin_index=master1-bin.index

binlog_format=mixed

relay_log=relay1-log

relay_log_index=relay1-log.index

server_id=1

sync_binlog=1

innodb_flush_log_at_trx_commit=1

備註:中繼日誌默認不存在,只有當複製啓動時纔會自動生成

四、master1建立具備複製權限的用戶:

MariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'192.168.1.146' identified by '123456';

MariaDB [(none)]> flush privileges;

五、master1查看正在使用的二進制日誌文件名稱及事件位置:

MariaDB [(none)]> show master status;

image.png

六、master2修改server.cnf配置文件:# vim /etc/my.cnf.d/server.cnf

[mysqld]

port=3306

socket=/var/lib/mysql/mysql.sock

datadir=/var/lib/mysql

log_error=/var/log/mariadb.log

lower_case_table_names=1

character_set_server=utf8mb4

collation_server=utf8mb4_general_ci

innodb_file_per_table=1

skip_name_resolve=1

slow_query_log=1

slow_query_log_file=mariadb-slow.log

log_bin=master2-bin

log_bin_index=master2-bin.index

binlog_format=mixed

relay_log=relay2-log

relay_log_index=relay2-log.index

server_id=2

sync_binlog=1

innodb_flush_log_at_trx_commit=1

七、master2使用具備複製權限的用戶鏈接至master1

MariaDB [(none)]> change master to master_host='192.168.1.145',master_user='repluser',master_password='123456',master_port=3306,master_log_file='master1-bin.000001',master_log_pos=2035;

MariaDB [(none)]> show slave status\G

image.png

備註:

(1)Slave_IO_RunningSlave_SQL_Running的值,默認爲No

(2)自動在數據目錄/var/lib/mysql中建立relay2-log.000001relay2-log.indexrelay-log.info文件

(3)Master_Log_File的值爲master1的二進制日誌文件名稱

(4)Read_Master_Log_Pos的值爲master1二進制日誌事件的位置

八、master2啓動複製線程:

MariaDB [(none)]> start slave;

備註:

(1)start slave等同於分別執行start slave io_threadstart slave sql_thread

(2)stop slave表示中止主從複製線程

(3)重啓master2所在的服務器,複製線程會自動啓動

MariaDB [(none)]> show slave status\G

image.png

image.png

備註:

(1)只有當Slave_IO_RunningSlave_SQL_Running的值都爲Yes時,複製線程纔算啓動成功

(2)Seconds_Behind_Master的值爲0,說明master2沒有落後於master1

(3)複製時的詳細信息記錄在master2的錯誤日誌/var/log/mariadb.log

九、master2建立具備複製權限的用戶:

MariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'192.168.1.145' identified by '123456';

MariaDB [(none)]> flush privileges;

十、master2查看正在使用的二進制日誌文件名稱及事件位置:

MariaDB [(none)]> show master status;

image.png

十一、master1使用具備複製權限的用戶鏈接至master2

MariaDB [(none)]> change master to master_host='192.168.1.146',master_user='repluser',master_password='123456',master_port=3306,master_log_file='master2-bin.000001',master_log_pos=2035;

MariaDB [(none)]> show slave status\G

image.png

備註:

(1)Slave_IO_RunningSlave_SQL_Running的值,默認爲No

(2)自動在數據目錄/var/lib/mysql中建立relay1-log.000001relay1-log.indexrelay-log.info文件

(3)Master_Log_File的值爲master2的二進制日誌文件名稱

(4)Read_Master_Log_Pos的值爲master2二進制日誌事件的位置

十二、master1啓動複製線程:

MariaDB [(none)]> start slave;

備註:重啓master1所在的服務器,複製線程會自動啓動

MariaDB [(none)]> show slave status\G

image.png

image.png

備註:

(1)只有當Slave_IO_RunningSlave_SQL_Running的值都爲Yes時,複製線程纔算啓動成功

(2)Seconds_Behind_Master的值爲0,說明master1沒有落後於master2

(3)複製時的詳細信息記錄在master1的錯誤日誌/var/log/mariadb.log

1三、master1查看master2相關信息:

MariaDB [(none)]> show slave hosts;

image.png

1四、master2查看master1相關信息:

MariaDB [(none)]> show slave hosts;

image.png


3、測試雙主模型複製:

一、master1建立測試數據:

MariaDB [(none)]> create database db1;

MariaDB [(none)]> use db1;

MariaDB [db1]> create table tb1(id int unsigned auto_increment primary key not null,name char(20) not null);

MariaDB [db1]> desc tb1;

MariaDB [db1]> insert into tb1(name) values('zhangsan'),('lisi');

MariaDB [db1]> select * from tb1;

image.png

MariaDB [db1]> show master status;

image.png

二、master2查看測試數據:

MariaDB [(none)]> show databases;

MariaDB [(none)]> use db1;

MariaDB [db1]> show tables;

MariaDB [db1]> desc tb1;

MariaDB [db1]> select * from tb1;

image.png

MariaDB [db1]> show slave status\G

三、master2建立測試數據:

MariaDB [db1]> insert into tb1(name) values('wangwu'),('zhaoliu');

MariaDB [db1]> select * from tb1;

image.png

MariaDB [db1]> show master status;

image.png

四、master1查看測試數據:

MariaDB [db1]> select * from tb1;

image.png

MariaDB [db1]> show slave status\G

相關文章
相關標籤/搜索