配置 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 |