Linux下MySQL資料庫主從同步配置

來源:互聯網
上載者:User

Linux下MySQL資料庫主從同步配置

Linux下MySQL資料庫主從同步配置

一.配置mysql主要資料庫#172.30.65.122

mysql -u root -p#進入控制台

create database cesudb#建立資料庫測速db

insert into mysql.user(Host,User,Password) values('localhost','cesuuser',password('123456'));#建立使用者cesuuser,密碼是123456

grant all on cesudb.* to 'cesuuser'@'172.30.65.169' identified by '123456' with grant option;#授予cesuuser的使用者在nagios伺服器172.30.65.169的機器上對cesudb的完整存取。

insert into mysql.user(Host,User,Password) values('localhost','cesudbbak',password('123456'));#建立mysql資料庫主從同步處理的使用者cesudbbak,使用者密碼是123456。

grant replication slave on *.* to 'cesudbbak'@'172.30.65.124' identified by '123456' with grant option;#授權cesudbbak使用者正能在172.30.65.124的機器上訪問主要資料庫並只有備份的許可權。

flush privileges;#重新整理系統授權表

二.把Mysql主伺服器172.30.65.122上的資料庫 cesudb匯入到Mysql從伺服器172.30.65.124中

注意:在到處前可在控制台執行以下的命令

flush tables with read lock;#資料庫唯讀鎖定命令,防止到處資料庫的時候有資料寫入。

匯出資料庫cesudb

mysqldump -u root -p --default-character-set=utf8 --opt -Q -R --skip-lock-tables cesudb > /home/cesudbbak.sql#需要在主要資料庫伺服器的shell>下操作,把資料庫cesudb匯出到/home目錄下並重新命名為cesudbbak.sql。

unlock tables;#解除鎖定,在mysql控制台執行

scp cesudbbak.sql root@172.30.65.124:/home#到/home目錄下把該檔案傳到從資料庫172.30.65.124的/home目錄下。

2.進入從資料庫#172.30.65.124
mysql -uroot -p

create database cesudb;#建立資料庫cesudb

use cesudb;使用資料庫cesudb

source /home/cesudbbak.sql#匯入備份檔案到資料庫

mysql -u cesudbbak -h 172.30.65.122 -p#測試在從資料庫伺服器172.30.65.124上登陸資料庫主伺服器172.30.65.122。該命令的執行要在shell>下面。

三.配置主要資料庫伺服器172.30.65.122的my.cnf檔案。

vim /etc/my.cnf#這裡的原生mysql是yum安裝的,如果你是編譯安裝的需另行找到主設定檔並修改。
把該目錄下的檔案改為以下就可以了。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id=1#需添加的行,該行制定為1表示主伺服器
log-bin=mysql-bin#需添加的行,啟動mysql二進位日誌系統
binlog-do-db=cesudb#需添加的行,需要同步的資料庫名,如有多個資料庫可以重複添加此行
binlog-ignore-db=mysql#需添加的行,不同步mysql系統資料庫
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

service mysqld restart#重啟mysql服務

mysql -u root -p#進入mysql控制台

show variables like 'server_id';#查看server_id的值是否為1
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id    | 1    |
+---------------+-------+
1 row in set (0.00 sec)

show master status#查看主伺服器資訊,出現以下類似的資訊

mysql> show master status;
+------------------+----------+--------------+------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |      106 | cesudb      | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

注意:這裡記住上面的File和Position的值,後面還會用到。

四.配置從資料庫的my.cnf檔案#172.30.65.124

vim /etc/my.cnf
修改為以下內容即可,該機器上的從資料庫也是yum安裝的,如自己機器上的資料庫是編譯安裝的可以另行制定設定檔位置
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id=2#需添加的行,設定其值等於2,表示是從資料庫
log-bin=mysql-bin#啟動mysql二進位日誌系統
replicate-do-db=cesudb#需要同步的資料庫名,如果有多個資料庫可以重複此參數,每個資料庫一行
replicate-ignore-db=mysql#不同步mysql系統資料庫
read_only#設定資料庫唯讀
#bind-address=172.30.65.124
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

service mysqld restart#重啟資料庫

mysql -u root -p#進入mysql控制台

show variables like 'server_id';#看到id為2,表示正常
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id    | 2    |
+---------------+-------+
1 row in set (0.00 sec)

 slave stop;#停止slave同步進程

change master to master_host='172.30.65.122',master_user='cesudbbak',master_password='123456',master_log_file='mysql-bin.000006',master_log_pos=106;#執行同步語句,master_log_file和master_log_pos就是上面提到的那連個值
mysql> change master to master_host='172.30.65.122',master_user='cesudbbak',master_password='123456',master_log_file='mysql-bin.000006',master_log_pos=106;
Query OK, 0 rows affected (0.02 sec)

slave start;#開啟slave同步進程

SHOW SLAVE STATUS\G#查看同步資訊,會出現以下的同步資訊
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.30.65.122
                  Master_User: cesudbbak
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000006
          Read_Master_Log_Pos: 106
              Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000006
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: cesudb
          Replicate_Ignore_DB: mysql
          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: 106
              Relay_Log_Space: 407
              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:
1 row in set (0.00 sec)
注意出現紅色字型的部分,以上的連個參數出現yes代表配置成功。

五.測試主從配置

1.在主要資料庫上建立一個表student#172.30.65.122
mysql -u root -p

use cesudb;

create table ...#建一個測試表
mysql> create table student (
    -> id int,
    -> name char(10),
    -> sex char(2));
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+------------------+
| Tables_in_cesudb |
+------------------+
| student          |
+------------------+
1 row in set (0.00 sec)

2.登入從資料庫查看該表#172.30.65.124

mysql> use cesudb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+------------------+
| Tables_in_cesudb |
+------------------+
| student          |
+------------------+
1 row in set (0.00 sec)

已經自動同步過來,說明同步成功。

實現兩個MySQL資料庫之間的主從同步

Linux環境中MySQL主從同步--添加新的從庫

通過 XtraBackup 實現不停機不鎖表搭建MySQL主從同步

MySQL主從同步配置記錄

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.