mysql主從配置


mysql主從配置 

  1. 主從介紹 

  • MySQL復制允許將主實例(master)上的數據同步到一個或多個從實例(slave)上,默認情況下復制是異步進行的,從庫也不需要一直連接主庫來同步數據。 

  • MySQL復制的數據粒度可以是主實例上所有的數據庫,也可以是指定的一個或多個數據庫,也可以是一個數據庫里的指定的表 

  • MySQL復制帶來的優勢在於 

  • 擴展能力: 

   通過復制可以將MySQL的性分到一個或多個slave上。這要求所有的寫操作和修改操作都必須在Master上完成,而讀操作可以被分配到一個或多個salve上。將讀寫分離到不同服務執行之后,MySQL的讀寫性能得到提升。 

  • 數據庫備份: 

    由於從實例時同步主實例的數據,所以可以將備份作業部署到從庫。 

  • 數據分析和報表: 

        同樣,一些數據分析和報表的實現可以在從實例執行,以減少對主庫的性能影響。 

  • 容災能力: 

        可以在物理距離較遠的另一個數據建立slave,保證在主實例所在地區遭遇災難時,在另一個數據中心能快速恢復。 

 

  1. 說明 

兩台mysql服務器,一台作為主服務器,一台作為從服務器,主服務器進行寫操作、從服務器進行讀操作 

主服務器數據庫:192.168.64.135 

從服務器數據庫:192.168.3.134 

2、軟件安裝 

  • 使用ubuntu apt安裝mysql,默認安裝APT軟件包存儲庫中的mysql 

$ sudo apt install -y mysql-server mysql-client libmysqlclient-dev 

  • 如果想安裝最新版mysql,需要按照如下操作: 

安裝mysql 8.0 

3、配置主服務器數據庫 

  • $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

找到如下內容並對應修改 

 

#服務器唯一標識 

server-id               = 1 

#啟動MySQL二進制日志 

log_bin                 = /var/log/mysql/mysql-bin.log 

#指定需要同步的數據庫,自定義,如需指定多個,再添加一行 

binlog_do_db            = ops 

binlog_do_db            = el_hub 

#指定不需要同步的數據庫 

binlog_ignore_db        = mysql 

bind-address            = 0.0.0.0 

 

  • 重啟mysql服務 

$ sudo systemctl restart mysql 

  • 使用apt安裝mysql無法設置密碼,需要查看初始密碼執行以下語句: 

sudo cat /etc/mysql/debian.cnf 

 

  • 創建ops和hub的數據庫(兩台服務器上都要操作) 

sudo mysql -uroot -p 

 

填入初始密碼:41McNSXsfgLBVwfj 

create database ops charset utf8; 

create database el_hub charset utf8; 

 

  • 登錄主服務器數據庫創建從服務器用到的賬戶和權限 

$ sudo mysql -uroot -p 

填入初始密碼:41McNSXsfgLBVwfj 

 

mysql> create user 'hongpu'@'%' identified by 'hongpu8192'; 

Query OK, 0 rows affected (0.03 sec) 

 

mysql> grant all on *.* to 'hongpu'@'%'; 

 

mysql> flush privileges; 

Query OK, 0 rows affected (0.00 sec) 

 

mysql>show master status; 

 

4、配置從服務器數據庫 

  • $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

找到如下內容並修改: 

server-id              = 2 #必須與主服務器數據庫不一樣 

log_bin                = /var/log/mysql/mysql-bin.log 

binlog_do_db           = marhal 

binlog_ignore_db       = mysql 

 

  • 重啟mysql服務 

$sudo systemctl restart mysql 

  • 使用apt安裝mysql無法設置密碼,需要查看初始密碼執行以下語句: 

sudo cat /etc/mysql/debian.cnf 

  

  • 登錄從服務器數據庫配置 

$ mysql -u root -p 

初始密碼:7cogZ3zHNZkHB3wT 

 

mysql> change master to \ 

    master_host='192.168.64.135', \ 

    master_port=3306, \ 

    master_user='hongpu', \ 

    master_password='hongpu8192', \ 

    master_log_file='mysql-bin.000003',  \ 

master_log_pos=154; 

 

 

master_log_file='mysql-bin.000001',   //上面截圖的File字段值 

master_log_pos=1095;                  //上面截圖的Position字段值 

 

>start slave; 

#查看slave信息 

>show slave status\G; 

 

至此,已配置成功 

 

5、常見情況處理 

問題:記錄刪除失敗 

解決方法:master要刪除一條記錄,而slave上因找不到要刪除的記錄而報錯,這種情況說明從機都已經刪除過了,那么從機可以直接跳過 

stop slave; 

set global sql_slave_skip_counter=1; 

start slave; 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM