在本地网络中配置MariaDB复制
MariaDB的复制设置
我在樱花云服务器上根据以下文章的参考进行了MariaDB的复制设置。
然而,由于恢复到从属端的方法稍有不同,所以我将其作为个人备忘记录下来。
总的来说,在樱花云的交换机上,我们安装了两台服务器(主服务器和从服务器),并使用GTID(主服务器上每个事务的标识符)进行复制设置。
由于简要介绍了设置的步骤,因此省略了详细的解释。
前提条件 tí
・CentOS7
・MariaDB版本10.3
・1台交换机
・MariaDB安装服务器(192.168.0.1)
・MariaDB安装服务器(192.168.0.2)
・本地网络已经建立完成
在主服务器上进行防火墙的允许设置。
首先,在准备阶段,需要将主机端的数据发送到从机端,所以主机端需要进行防火墙的许可设置。
因此,在主控端,使用防火墙命令允许仅使用从设备的私有IP地址192.168.0.2进行连接。
# firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.2" service name="mysql" accept'
# firewall-cmd --reload
创建仅具有复制权限的用户
在主控端创建具备复制权限的用户。(稍后通过从控端配置主数据库来记录用户信息)
MariaDB [(none)]> CREATE USER 'repl'@'localhost' IDENTIFIED BY 'repl';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
在主节点上设置用于复制的参数
因为我是主服务器,所以将server-id设为1,并将任意二进制日志(包括记录更改历史等)的文件名设定为自由选择。
# systemctl stop mariadb
# vi /etc/my.cnf.d/server.cnf
[mysqld]
server-id = 1 # スレーブと異なるサーバIDにする
log-bin=master-bin # 任意のバイナリログファイル名
binlog-format = ROW
log-slave-updates
# systemctl start mariadb
MariaDB [(none)]> SHOW VARIABLES LIKE 'server_id'; #server_idが設定されている確認
在Slave端设置用于复制的参数。
由于处于从属端,将server-id设置为2,并指定任意的二进制日志文件名。
# systemctl stop mariadb
# vi /etc/my.cnf.d/server.cnf
[mysqld]
server-id = 2 # マスターと異なるサーバIDにする
log-bin=slave-bin # 任意のバイナリログファイル名
read_only # 読み込み専用
log-slave-updates
# systemctl start mariadb
MariaDB [(none)]> SHOW VARIABLES LIKE 'server_id'; #server_idが設定されている確認
创建主数据库的转储文件
只有在复制开始时,才需要手动将主数据库完整地复制到从数据库。因此,需要对主数据库进行转储(将包括表等结构和数据的数据库转换为SQL语句的形式进行保存),将数据放入适当的文件(dump.sql)以保存主数据库的数据。
# mysqldump --all-databases -u root -p --master-data=2 --single-transaction --routines > dump.sql
请确认Dump文件的二进制日志文件名和位置。
确认用于检查GTID的二进制日志文件名和位置。
MariaDB [(none)]> SHOW MASTER STATUS; #File名とPosition番号を確認
查询当前主服务器的GTID
GTID的格式是类似x-x-x的记录,由域ID + 服务器ID + 每个服务器的事务号组成。
MariaDB [(none)]> SELECT BINLOG_GTID_POS( “File名”, Position番号);
在从属端设置GTID。
以该GTID为标识进行复制操作。
MariaDB [(none)]> SET GLOBAL gtid_slave_pos = ‘X-X-X’;
恢复作为从属的一方
将主服务器的转储文件复制到从服务器上。
# scp dump.sql root@192.168.0.2:dump.sql
在从站端设置主服务器和启动从站的设置。
MariaDB> CHANGE MASTER TO
→ MASTER_HOST = '192.168.0.1',
→ MASTER_USER = 'repl',
→ MASTER_PASSWORD = 'replユーザのパスワード',
→ MASTER_USE_GTID = slave_pos;
MariaDB> START SLAVE;
MariaDB> SHOW SLAVE STATUS \G #GTIDが合っているか、スレーブ起動がYESになっているかなど確認
最后确认
随意创建一个数据库,并验证从属端是否反映了该数据库。
MariaDB [(none)]> USE test;
MariaDB [(test)]> CREATE TABLE testTable(num int, name varchar(50));
MariaDB [(test)]> SHOW TABLES;