共計 4915 個字符,預計需要花費 13 分鐘才能閱讀完成。
這篇文章主要介紹“MYSQL 主從搭建的方法教程”,在日常操作中,相信很多人在 MYSQL 主從搭建的方法教程問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MYSQL 主從搭建的方法教程”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
一、MySQL 主從復制搭建
MySQL 主從復制搭建主要步驟有:安裝 mysql 軟件、Master 端配置部署、Slave 端配置部署、建立主從同步
安裝操作系統(tǒng)環(huán)境:REDHAT6.5
以下內(nèi)容都是自己在虛擬機親測
1、安裝 MYSQLa、環(huán)境準備及軟件安裝
安裝環(huán)境:
NODE1 主機名
master IP 地址 192.168.159.128
NODE2 主機名
slave IP 地址 192.168.159.129
b、安裝 MYSQL 主從都要進行安裝
#tar zxvf mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
#
cd /usr/local/
#
mysql-5.6.38-linux-glibc2.12-x86_64
mysql
#
cd mysql
#
groupadd mysql
#
useradd -g mysql mysql
# passwd
mysql
# cd /usr/local/
# chown -R mysql.mysql mysql
#
./script/mysql_install_db –user=mysql
# cd /usr/local/mysql
# chown -R root:root ./
# chown -R mysql:mysql data
#
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
#
chmod u+x /etc/rc.d/init.d/mysqld
#
chkconfig –add mysqld
#
/etc/rc.d/init.d/mysqld start
在這里是采用的簡易安裝,如果想要在生產(chǎn)環(huán)境使用,想自己指定需要的參數(shù),建議還是使用源碼安裝
注:主從都使用 yum install 的方式安裝系統(tǒng)自帶的 mysql 也可以使用,親測搭建成功,只是版本會比較低
2、Master 端配置部署
a、在主服務器上的 my.cnf 配置文件中的 [mysqld] 節(jié)點下添加以下配置
黃色部分為新添加
vi /etc/my.cnf
[mysqld]
server-id=101
log-bin=/var/lib/mysql/mysql-bin.log
log-bin-index=/var/lib/mysql/mysql-bin.index
expire_logs_days=30
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
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
說明:
log-bin:給出二進制日志的所有文件基礎名
log-bin-index:給出二進制日志文件的文件名,通常以 000001 開始,順序遞增。全名:master-bin.000001
server-id:mysql 服務器唯一 ID,在主從復制的所有服務器中必須唯一。
b、創(chuàng)建用戶,并賦予權限:
create user repl_user;
GRANT
REPLICATION SLAVE ON *.* TO repl @ % IDENTIFIED BY PASSWORD ******
設置密碼時會遇到報錯:
ERROR 1372
(HY000): Password hash should be a 41-digit hexadecimal number
解決辦法:用 select
password(你想輸入的密碼 查詢出你的密碼對應的字符串
select password(123456
查出的是 *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
GRANT REPLICATION SLAVE ON *.* TO repl_user @ %
IDENTIFIED BY PASSWORD *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
2、Slave 端配置部署 a、配置參數(shù):[mysqld]
黃色部分為新添加
vi /etc/my.cnf
[mysqld]
server-id=102
log-bin=/var/lib/mysql/mysql-relay-bin.log
log-bin-index=/var/lib/mysql/mysql-relay-bin.index
relay_log_purge=on
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
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
3、建立主從同步
(重建備庫使用該方法,備庫和主庫是正常數(shù)據(jù)同步狀態(tài))
建立主從同步可以從主庫上導出數(shù)據(jù),也可以從已有的從庫上導出數(shù)據(jù),然后再導入到新的從庫中,change master to 建立同步。
、導出數(shù)據(jù)
在主庫上導出數(shù)據(jù):
mysqldump
-u***-p***-S /data/mysql6001/mysql.sock –default-character-set=utf8
–q –single-transaction –master-data-A /tmp/all_database.sql
(重建備庫時)也可在從庫上導出數(shù)據(jù):(我這里是測試環(huán)境,所以對于我來說都是新建的數(shù)據(jù)庫,所以無所謂啦)
mysqldump
-u***-p***-S /data/mysql6001/mysql.sock –default-character-set=utf8 -q
–single-transaction –dump-slave-A
/tmp/all_database.sql
NOTES:
–master-data 和 –dump-slave 導出的備份中,會包含 master_log_file 和 master_log_pos 信息。
–master-data 選項的作用,是將二進制的信息寫入到輸出文件中,在這里是寫入到備份的 sql 文件中。
–dump-slave 選項的作用,是用戶在 slave 端 dump 數(shù)據(jù),建立新的 slave, 至少是第 2 個 slave, 也就是已經(jīng)有 A – B, 現(xiàn)在從 B 上導出數(shù)據(jù)建立 A – C 的復制,這個不但可以用于建立 slave, 還可用于備份中,用于讀 binlog 進行 roll forward 的起點
例子:(實際直接主庫全庫導出即可)
mysqldump -uroot –events –all-databases /opt/mysql.dump
3.2、從庫導入數(shù)據(jù)
mysql
-u*** -p*** –default-character-set=utf8 all_database.sql
例子:
mysql -uroot mysql.dump /mysql.dump
3.3、從庫與主機建立同步
以下為建立主從同步最基本的 6 個項:change master to
master_host= xxx.xxx.xxx.xxx , #
主庫 IP
master_port=6001, #
主庫 mysqld 的端口
master_user= repl , #
主庫中創(chuàng)建的有 REPLICATION SLAVE 權限的用戶
master_password= xxxxxxxx , #
該用戶的密碼
master_log_file= mysql-bin.000xxx ,
#
已在導入時指定了
master_log_pos=xxxxxx; #已在導入時指定了
start slave;
例子:
master_log_file 和 master_log_pos 通過在主庫上使用命令獲得:
show master status \G;
在從庫上執(zhí)行:
change master
to
master_host= 192.168.159.128 ,
master_port=3306,
master_user= repl_user ,
master_password= 123456 ,
master_log_file= mysql-bin.000001 ,
master_log_pos=1071;
start
slave;
二、主從復制狀態(tài)檢查及異常處理 1、MYSQL 啟動報錯(1)MYSQL 啟動時報錯:
Another MySQL daemon already running with the same
unix socket
原因多個 Mysql 進程使用了同一個 socket。
兩個方法解決:
第一個是立即關機 使用命令 shutdown -h now 關機,關機后在啟動,進程就停止了。
第二個直接把 mysql.sock 文件改名即可。也可以刪除,推薦改名。
然后就可以啟動 mysql 了。
(2)在 REDHAT7.0 版本安裝 MYSQL5.6.38 時遇到以下啟動報錯
service mysql start
Starting MySQL.180424 22:21:31 mysqld_safe error: log-error set to /var/log/mariadb/mariadb.log , however file don t exists. Create writable for user mysql .
ERROR! The server quit without updating PID file (/var/lib/mysql/REDHAT70.pid).
解決方法:
mkdir -p /var/log/mariadb/
cd /var/log/mariadb/
touch mariadb.log
chmod -R 775 mariadb.log
chown -R mysql:mysql mariadb.log
2、ERROR-2013 報錯
ERROR-2013 報錯代碼,可能造成的原因是
[ERROR] Slave I/O: error connecting to master
repl_user@192.168.159.128:3306 – retry-time: 60 retries: 86400, Error_code: 2013
iptables -F
setenforce 0
3、ERROR-1045 報錯
Last_IO_Errno: 1045
Last_IO_Error: error connecting to master repl_user@192.168.159.128:3306
– retry-time: 60 retries: 86400
必須使用以下方法授權
select password(123456
GRANT REPLICATION SLAVE ON
*.* TO repl_user @ % IDENTIFIED BY PASSWORD *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 4、登陸 MYSQL 報錯 ERROR-2002
登陸 MYSQL 時如果報錯:
ERROR 2002 (HY000): Can t connect to local
MySQL server through socket /tmp/mysql.sock
解決方法:
ln -s /var/lib/mysql/mysql.sock
/tmp/mysql.sock
到此,關于“MYSQL 主從搭建的方法教程”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注丸趣 TV 網(wǎng)站,丸趣 TV 小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>