LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > 数据库 >

如何在CentOS中配置MariaDB复制(2)

时间:2015-05-25 09:46来源:linux.cn 编辑:linux.cn 点击:
配置 MariaDB 复制 你需要在主节点服务器上编辑 my.cnf文件来启用二进制日志以及设置服务器id。我会使用vi文本编辑器,但你可以使用任何你喜欢的,例如

配置 MariaDB 复制

你需要在主节点服务器上编辑 my.cnf文件来启用二进制日志以及设置服务器id。我会使用vi文本编辑器,但你可以使用任何你喜欢的,例如nano,joe。

sudo vi /etc/my.cnf 

将下面的一些行写到[mysqld]部分。

log-basename=master
log-bin
binlog-format=row
server_id=1

输出如下:

然后重启 MariaDB:

sudo service mariadb restart

登录到 MariaDB 并查看二进制日志文件:

sudo mysql -u root -pq test_repl
mysql> SHOW MASTER STATUS;

输出如下:

+--------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000002 | 3913 | | |
+--------------------+----------+--------------+------------------+

记住 : "File" 和 "Position" 的值。在从节点中你需要使用这些值

创建用来复制的用户

mysql> GRANT REPLICATION SLAVE ON *.* TO replication_user IDENTIFIED BY 'bigs3cret' WITH GRANT OPTION;
mysql> flush privileges;

输出如下:

Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

在数据库中检查用户

mysql> select * from mysql.user WHERE user="replication_user"\G;

输出如下:

mysql> select * from mysql.user WHERE user="replication_user"\G;
*************************** 1. row ***************************
Host: %
User: replication_user
Password: *2AF30E7AEE9BF3AF584FB19653881D2D072FA49C
Select_priv: N
.....

从主节点创建 DB dump (将要被复制的所有数据的快照)

mysqldump -uroot -pSOME_ROOT_PASSWORD test_repl > full-dump.sql

其中:

SOME_ROOT_PASSWORD - 你设置的root用户的密码
test_repl - 将要复制的数据库的名称;

你需要在从节点中恢复 mysql dump (full-dump.sql)。重复需要这个。

从节点配置

所有这些命令需要在从节点中进行。

假设我们已经更新/升级了包括有最新的MariaDB服务器的 CentOS 7.x,而且你可以用root账号登陆到MariaDB服务器(这在这篇文章的第一部分已经介绍过)

登录到Maria 数据库控制台并创建数据库

mysql -u root -pSOME_ROOT_PASSWORD;
mysql> create database test_repl;
mysql> exit;

在从节点恢复主节点的数据

mysql -u root -pSOME_ROOT_PASSWORD test_repl < full-dump.sql

其中:

full-dump.sql - 你在测试服务器中创建的DB Dump。

登录到Maria 数据库并启用复制

mysql> CHANGE MASTER TO
MASTER_HOST='82.196.5.39',
MASTER_USER='replication_user',
MASTER_PASSWORD='bigs3cret',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000002',
MASTER_LOG_POS=3913,
MASTER_CONNECT_RETRY=10;

其中:

MASTER_HOST - 主节点服务器的IP
MASTER_USER - 主节点服务器中的复制用户
MASTER_PASSWORD - 复制用户密码
MASTER_PORT - 主节点中的mysql端口
MASTER_LOG_FILE - 主节点中的二进制日志文件名称
MASTER_LOG_POS - 主节点中的二进制日志文件位置

开启从节点模式

mysql> slave start;

输出如下:

Query OK, 0 rows affected (0.00 sec)

检查从节点状态

mysql> show slave status\G;

输出如下:

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 82.196.5.39
Master_User: replication_user
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: mariadb-bin.000002
Read_Master_Log_Pos: 4175
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 793
Relay_Master_Log_File: mariadb-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 4175
Relay_Log_Space: 1089
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
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)

到这里所有步骤都应该没问题,也不应该出现错误。

测试复制

在主节点服务器中添加一些条目到数据库

mysql -u root -pSOME_ROOT_PASSWORD test_repl

mysql> INSERT INTO Persons VALUES (6, "LastName6", "FirstName6", "Address6", "City6");
mysql> INSERT INTO Persons VALUES (7, "LastName7", "FirstName7", "Address7", "City7");
mysql> INSERT INTO Persons VALUES (8, "LastName8", "FirstName8", "Address8", "City8");

到从节点服务器中查看复制数据

mysql -u root -pSOME_ROOT_PASSWORD test_repl

mysql> select * from Persons;

+----------+-----------+------------+----------+-------+
| PersonID | LastName | FirstName | Address | City |
+----------+-----------+------------+----------+-------+
...................
| 6 | LastName6 | FirstName6 | Address6 | City6 |
| 7 | LastName7 | FirstName7 | Address7 | City7 |
| 8 | LastName8 | FirstName8 | Address8 | City8 |
+----------+-----------+------------+----------+-------+
你可以看到数据已经被复制到从节点。这意味着复制能正常工作。

转载请保留固定链接: https://linuxeye.com/database/2550.html

------分隔线----------------------------
标签:centosMariaDB
栏目列表
推荐内容