Centos7下mysql配置主從

2022-09-12 06:51:12 字數 3940 閱讀 6974

虛擬機器環境:

centos 7.1810(64-bit system)

資料庫版本:mysql 5.6.24

1、資料庫安裝

參考:https://

如果提示 wget: 未找到命令,請先執行 yum install wget 安裝 wget

yum install wget

新增 mysql yum repository

新增 mysql yum repository 到你的系統 repository 列表中

yum localinstall mysql-community-release-el7-5.noarch.rpm

2、主庫設定

1.在主資料庫伺服器為從伺服器新增乙個擁有許可權訪問主庫的使用者

grant replication sl**e on *.* to '

test

'@'%

' identified by '

test

';

(%表示允許所有ip,可設定指定從伺服器ip)

新增使用者後:

可在從伺服器上用mysql -h127.0.0.1 -utest -ptest; 來測試是否有許可權訪問主資料庫

2.在主據庫配置檔案加上

#master config

server-id = 1

log-bin = mysql-bin

innodb_flush_log_at_trx_commit=1

sync_binlog=1

引數說明:

server-id:

master_id必須為1到232–1之間的乙個正整數值。並且,從伺服器的id必須與主伺服器的id不相同

1、 mysql的同步的資料中是包含server-id的,用於標識該語句最初是從哪個server寫入的,所以server-id一定要有的

2、 每乙個同步中的sl**e在master上都對應乙個master執行緒,該執行緒就是通過sl**e的server-id來標識的;每個sl**e在master端最多有乙個master執行緒,如果兩個sl**e的server-id 相同,則後乙個連線成功時,前乙個將被踢掉。 這裡至少有這麼一種考慮:

sl**e主動連線master之後,如果sl**e上面執行了sl**e stop;則連線斷開,但是master上對應的執行緒並沒有退出;當sl**e start之後,master不能再建立乙個執行緒而保留原來的執行緒,那樣同步就可能有問題;

3、 在mysql做主主同步時,多個主需要構成乙個環狀,但是同步的時候有要保證一條資料不會陷入死迴圈,這裡就是靠server-id來實現的

binlog:

mysql的二進位制日誌可以說是mysql最重要的日誌了,它記錄了所有的ddl和dml(除了資料查詢語句)語句,以事件形式記錄,還包含語句所執行的消耗的時間,mysql的二進位制日誌是事務安全型的。

一般來說開啟二進位制日誌大概會有1%的效能損耗(參見mysql官方中文手冊 5.1.24版)。二進位制有兩個最重要的使用場景:

其一:mysql replication在master端開啟binlog,mster把它的二進位制日誌傳遞給sl**es來達到master-sl**e資料一致的目的。

其二:自然就是資料恢復了,通過使用mysqlbinlog工具來使恢復資料。

二進位制日誌包括兩類檔案:二進位制日誌索引檔案(檔名字尾為.index)用於記錄所有的二進位制檔案,二進位制日誌檔案(檔名字尾為.00000*)記錄資料庫所有的ddl和dml(除了資料查詢語句)語句事件。

innodb_flush_log_at_trx_commit:

0:log buffer將每秒一次地寫入log file中,並且log file的flush(刷到磁碟)操作同時進行。該模式下在事務提交的時候,不會主動觸發寫入磁碟的操作。

1:每次事務提交時mysql都會把log buffer的資料寫入log file,並且flush(刷到磁碟)中去,該模式為系統預設。

2:每次事務提交時mysql都會把log buffer的資料寫入log file,但是flush(刷到磁碟)操作並不會同時進行。該模式下,mysql會每秒執行一次 flush(刷到磁碟)操作。

當設定為0,該模式速度最快,但不太安全,mysqld程序的崩潰會導致上一秒鐘所有事務資料的丟失。

當設定為1,該模式是最安全的,但也是最慢的一種方式。在mysqld 服務崩潰或者伺服器主機crash的情況下,binary log 只有可能丟失最多乙個語句或者乙個事務。。

當設定為2,該模式速度較快,也比0安全,只有在作業系統崩潰或者系統斷電的情況下,上一秒鐘所有事務資料才可能丟失。

查詢資料時候看到其他文章說innodb_flush_log_at_trx_commit和sync_binlog 兩個引數是控制mysql 磁碟寫入策略以及資料安全性的關鍵引數,當兩個引數都設定為1的時候寫入效能最差,推薦做法是innodb_flush_log_at_trx_commit=2,sync_binlog=500 或1000

一般mysql資料庫的配置檔案位置在 /etc/my.cnf

不在這個目錄下,用find命令找一下

find / -name my.cnf

修改好配置檔案後,重啟mysql服務

進入mysql,檢視主伺服器狀態

show master status;

file

position

binlog_do_db

binlog_ignore_db

executed_gtid_set

mysql-bin.000006

120出現這塊內容,主伺服器即配置完成

3、從庫設定

重啟mysql服務後,登入mysql配置以下資訊

mysql>change master to

-> master_host='

192.168.253.143',

-> master_port=3306

,-> master_user='

replication_user_name',

-> master_password='

replication_password',

-> master_log_file='主資料庫file:

mysql-bin.000006',

-> master_log_pos=主資料庫position:120;

如果你的一切配置順利

你在從伺服器上輸入命令:show sl**e status\g

正常情況:sl**e_io_running:yes

sl**e_sql_running:yes

4、測試

在主庫進行相應操作,在從庫檢視資料是否更新成功

5、總結

centos7下mysql配置遠端連線

1 將 etc my.cnf 裡的 bind address 127.0.0.1 注釋掉 我們通過 netstat apn grep 3306 檢視當前mysql網路狀態資訊 root www netstat apn grep 3306 tcp 0 0 0.0.0.0 3306 0.0.0.0 li...

virtualbox下centos7配置靜態ip

最新的virtualbox 5.2.12 七種網路型別區別 官方解釋 vm host vm1 vm2 vm internet vm internet host only internal bridged nat port forwarding nat network port forwarding ...

centos7配置mysql報錯

首先 wget rpm ivh mysql community release el7 5.noarch.rpm yum update yum install mysql server yum install mariadb server mariadb然後在啟動的時候報錯超時,找了很多個解決方法 ...