mysql主從配置與數(shù)據(jù)移植

配置mysql的主從模式,當一臺mysql出現(xiàn)問題后,另外一臺可以正常工作。
兩臺機器IP:192.168.1.60(master)、192.168.1.61(slave)
注意:在配置之前,確保兩臺節(jié)點都有需同步的數(shù)據(jù)庫。

1、master節(jié)點配置

1.1、修改配置文件

192.168.1.60:master節(jié)點
vim /etc/my.cnf
添加如下內(nèi)容:

 [mysqld]
 log-error=/data/mysql_log/error.log  # mysql的error日志
 log=/data/mysql_log/mysql.log  # mysql的操作日志
 log-bin=/data/mysql_log/binlog  # 配置binlog,通過binlog將兩個mysql同步
 server-id=1  # 配置本臺機器mysql的id
 binlog-do-db = mytest # 配置需要同步的數(shù)據(jù)庫

1.2、master節(jié)點需要授權(quán)slave節(jié)點訪問

mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.1.61' identified by 'test123456';
mysql>FLUSH PRIVILEGES;

如果要允許所有主機訪問,用%代替ip即可:

mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'test123456';
mysql>FLUSH PRIVILEGES;

1.3、重啟服務

service mysqld restart
重啟服務的過程中可能遇到啟動失敗的情況:

/usr/local/mysql/bin/mysqld: File '/data/mysql_log/binlog.index' not found (Errcode: 13)

這個主要是因為這個目錄mysql用戶沒有權(quán)限導致的。
chown mysql /data/mysql_log 即可解決問題。

1.4、查看master進程的狀態(tài)

MySQL [mytest]> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000004 |      106 | mytest       |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

slave節(jié)點配置

192.168.1.61:slave節(jié)點

2.1、修改配置文件

vim /etc/my.cnf
添加如下內(nèi)容:

[mysqld]
log-error=/data/mysql_log/error.log  # mysql的error日志
log=/data/mysql_log/mysql.log  # mysql的操作日志
server-id=2  # 配置本臺機器mysql的id
master-host=192.168.1.60  # master節(jié)點的ip
master-user=root  # 訪問master節(jié)點的用戶名
master-password=test123456  # 訪問master節(jié)點的密碼
master-port=3306  # 訪問master節(jié)點的端口
replicate-do-db=mytest  # 配置需要同步的數(shù)據(jù)庫

2.2 啟動slave進程

mysql> slave start;
Query OK, 0 rows affected (0.04 sec)

2.3 查看slave狀態(tài)

MySQL [mytest]> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 100.110.5.77
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 106
               Relay_Log_File: TENCENT64-relay-bin.000014
                Relay_Log_Pos: 248
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: mytest
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 

看到Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes
,就說明配置成功。

3、測試

master 插入一個表:

MySQL [mytest]> CREATE TABLE IF NOT EXISTS `runoob_tbl`(
    ->    `runoob_id` INT UNSIGNED AUTO_INCREMENT,
    ->    `runoob_title` VARCHAR(100) NOT NULL,
    ->    `runoob_author` VARCHAR(40) NOT NULL,
    ->    `submission_date` DATE,
    ->    PRIMARY KEY ( `runoob_id` )
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

slave 查看效果:

MySQL [mytest]> show tables;
+------------------+
| Tables_in_mytest |
+------------------+
| runoob_tbl       |
+------------------+
1 row in set (0.00 sec)

master 插入數(shù)據(jù):

MySQL [mytest]> insert into runoob_tbl(runoob_title,runoob_author,submission_date) values("ad","bb",now());
Query OK, 1 row affected, 1 warning (0.00 sec)

MySQL [mytest]> insert into runoob_tbl(runoob_title,runoob_author,submission_date) values("ae","bb",now());
Query OK, 1 row affected, 1 warning (0.00 sec)

MySQL [mytest]> insert into runoob_tbl(runoob_title,runoob_author,submission_date) values("af","bb",now());
Query OK, 1 row affected, 1 warning (0.00 sec)

slave查看數(shù)據(jù):

MySQL [mytest]> select * from runoob_tbl;
+-----------+--------------+---------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-----------+--------------+---------------+-----------------+
|         1 | ad           | bb            | 2018-03-08      |
|         2 | ae           | bb            | 2018-03-08      |
|         3 | af           | bb            | 2018-03-08      |
+-----------+--------------+---------------+-----------------+
3 rows in set (0.00 sec)

以上則說明配置測試成功。

4、master節(jié)點數(shù)據(jù)復制到slave節(jié)點

4.1 主庫操作:

  1. 停止主庫的數(shù)據(jù)更新操作

mysql>flush tables with read lock;

  1. 新開終端,生成主數(shù)據(jù)庫的備份(導出數(shù)據(jù)庫)

mysqldump -uroot -ptest123 cmdb > cmdb.sql

  1. 將備份文件傳到從庫

scp cmdb.sql root@192.168.8.11:/root/
4、主庫解鎖

mysql>unlock tables;

4.2 從庫操作:

1)停止從庫slave

mysql>slave stop;

2)新建數(shù)據(jù)庫cmdb

mysql> create database cmdb default charset utf8;

3)導入數(shù)據(jù)

mysql -uroot -ptest123 cmdb < cmdb.sql

4)查看從庫已有該數(shù)據(jù)庫和數(shù)據(jù)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cmdb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

5 啟動slave進程

mysql>slave start;

上述是5.1版本的配置,5.7版本又有些不同的配置,如下:

  1. 不存在log=/data/mysql_log/mysql.log 配置
  2. slave節(jié)點配置時,不能通過配置文件配置用戶名,密碼,接口等等,需要通過命令:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.10',
  MASTER_PORT=3306,
  MASTER_USER='rep1',
  MASTER_PASSWORD='test123456',
  MASTER_LOG_FILE='binlog.000001',
  MASTER_LOG_POS=1304; #后面兩個參數(shù)的值與主庫保持一致
  1. 啟動slave時不能通過slave start命令,而是 start slave命令。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容