天天看點

Ubuntu搭建mysql主從。Ubuntu搭建mysql主從。

Ubuntu搭建mysql主從。

實驗環境: Ubuntu16.04 兩台,mysql 5.7

本次執行個體為master -slave。

1)安裝mysql

在Ubuntu環境中,使用apt-get install mysql-server 安裝mysql。

      *1)初次使用apt-get 需要進行更新 sudo apt-get update,

      *2)apt-get安裝指令若提示報錯,使用ps -A |grep apt, 檢視是否有相關程序在使用。)

遇y确定,安裝過程中,彈窗輸入密碼,兩次OK确認之後,安裝結束。

可以通過 sudo netstat -tap | grep mysql 發現 mysql 的socket處于 listen 則安裝成功。使用mysql -u root -p 進入檢視 u代表登入名,p 代表密碼。

2)編輯mysqld.cnf

 修改參數配置的mysql.cnf在Ubuntu變成了mysqld.cnf,預設在是在/etc/mysql/mysqld.conf.d/mysqld.cnf)下

    (1)master 庫配置

在[mysqld]下面修改以下參數,不帶*為非必要參數,

*user                      = mysql 

*pid-file                  = /var/run/mysqld/mysqld.pid

*socket                  = /var/run/mysqld/mysqld.sock

*port                      = 3306

*basedir                 = /usr

*datadir                  = /var/lib/mysql

*server-id             = 1   //用來唯一的辨別某個資料庫執行個體的值,數值随意,但不可以重複 

*log_bin                = /var/log/mysql/mysql-bin.log  //開啟binlog

*binlog_format          =mixed  //binlog的格式,包括mixed,statement,mixed

sync_binlog             =1 // 控制bin日志重新整理到磁盤,1表示表示每次事務送出,都把binlog重新整理下去(最安全,高并發會影響性能);0表示MySQL不控制binlog的重新整理

binlog_do_db            = ceshi //指定binlog記錄ceshi資料庫,多個資料庫需分行添加

binlog_do_db            = ceshi2

binlog_ignore_db        = mysql  //指定binlog記錄忽略的mysql資料庫。

特别注意 bind-address 預設為本地位址,如果需要遠端通路,則需要修改指定為從庫的位址,或者直接注釋掉-.-,否則後面從庫同步的時候會報錯,提示無法連接配接 (╥﹏╥)都是淚。

配置完成後,重新開機mysql 。進入後 執行 show master status \G;顯示以下資訊

mysql> show master status \G;                                                  

*************************** 1. row ***************************

             File: mysql-bin.000001

         Position: 712

     Binlog_Do_DB: ceshi,ceshi2

 Binlog_Ignore_DB: mysql

Executed_Gtid_Set: 

1 row in set (0.01 sec)

記下file和position值,後面從庫需要,

(2)slave 端的配置

同樣在[mysqld]下面

*server-id               = 2 

log_bin                 = mysql-bin

replicate_do_db         = ceshi

replicate_do_db         = ceshi2

replicate_ignore_db     = mysql

重新開機從庫。

3 )在master 添加主從同步的賬号,并授權

mysql> create user repl;

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'從庫ip位址' IDENTIFIED BY '密碼'; // 加粗部分修改為自己的參數。

mysql> flush privileges;

4)在slave庫中執行

        mysql>change master to master_host='主庫ip位址',master_port=3306,master_user='repl',master_password='密碼',master_log_file='mysql-bin.000001',master_log_pos=712;  

file 及pos值 即上文主庫的相應值。

mysql>start slave;

mysql> show slave status \G;檢視主從庫狀态。

如圖,表示主從正常。

5)測試下。在主庫建立表,資料。看從庫是否同步過去。

 原文位址https://blog.csdn.net/igxuyr_/article/details/81186969