MYSQL主從搭建5.6.38
一、MySQL主從複製搭建
MySQL主從複製搭建主要步驟有:安裝mysql軟體、Master端配置部署、Slave端配置部署、建立主從同步
安裝作業系統環境:REDHAT6.5
以下內容都是自己在虛擬機器親測
1、安裝MYSQL
a、環境準備及軟體安裝
安裝環境:
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/
# mv 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
在這裡是採用的簡易安裝,如果想要在生產環境使用,想自己指定需要的引數,建議還是使用原始碼安裝
注:主從都使用yum install 的方式安裝系統自帶的mysql也可以使用,親測搭建成功,只是版本會比較低
2、Master端配置部署
a、在主伺服器上的my.cnf配置檔案中的[mysqld]節點下新增以下配置
黃色部分為新新增
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、建立使用者,並賦予許可權:
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 、配置引數: [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、建立主從同步
(重建備庫使用該方法,備庫和主庫是正常資料同步狀態)
建立主從同步可以從主庫上匯出資料,也可以從已有的從庫上匯出資料,然後再匯入到新的從庫中,change master to建立同步。
3.1 、匯出資料
在主庫上匯出資料:
mysqldump -u***-p***-S /data/mysql6001/mysql.sock --default-character-set=utf8 –q --single-transaction --master-data-A > /tmp/all_database.sql
(重建備庫時)也可在從庫上匯出資料:(我這裡是測試環境,所以對於我來說都是新建的資料庫,所以無所謂啦)
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資料,建立新的slave,至少是第2個slave,也就是已經有A-->B,現在從B上匯出資料建立A-->C的複製, 這個不但可以用於建立slave,還可用於備份中,用於讀binlog進行roll forward的起點
例子:(實際直接主庫全庫匯出即可)
mysqldump -uroot --events --all-databases > /opt/mysql.dump
3.2、從庫匯入資料
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', # 主庫中建立的有 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; 在從庫上執行: 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;
|
二、主從複製狀態檢查及異常處理
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
--未完待續
原本只是想自己寫個小總結,自己記錄下,沒想到會被推薦,有時間就上來編輯修改下,儘量完善
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-2152860/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql主從搭建MySql
- Docker 方式 MySQL 主從搭建DockerMySql
- mysql主從複製搭建MySql
- mysql主從搭建切換MySql
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- MYSQL5.6.40原始碼安裝 主從搭建 主主搭建MySql原始碼
- mysql雙主雙從 搭建配置MySql
- 新環境搭建Mysql主從MySql
- MYSQL主從複製的搭建MySql
- Mysql主從搭建(docker compose)MySqlDocker
- 記一次 MySQL 主從搭建MySql
- 基於GTID搭建主從MySQLMySql
- Mysql主從複製原理及搭建MySql
- MySql雙主一從服務搭建MySql
- 簡單搭建MySQL主從複製MySql
- MYSQL 主從 + ATLAS 讀寫分離 搭建MySql
- mysql主從複製的理解和搭建MySql
- mysql 5.7 主從複製搭建及原理MySql
- MySQL 5.7 用mysqldump搭建gtid主從MySql
- 【Mysql】Mariadb多主一從的搭建MySql
- MySQL 5.7 用xtrabackup搭建gtid主從MySql
- rpm 安裝5.6 MySql主從搭建MySql
- MySQL-主從複製之搭建主資料庫MySql資料庫
- mysql之 mysql 5.6不停機主從搭建(一主一從基於GTID複製)MySql
- MySQL-主從複製之搭建從資料庫MySql資料庫
- Tony 老師搭建 MySQL 主從伺服器MySql伺服器
- 基於Linux的docker mysql主從搭建LinuxDockerMySql
- MySQL主從配置及haproxy和keepalived搭建MySql
- docker-compase搭建mysql主從複製DockerMySql
- mysql 主從複製搭建詳細步驟MySql
- mysql之 mysql 5.6不停機主從搭建(一主一從基於日誌點複製)MySql
- Redis主從搭建Redis
- MySQL主從MySql
- MySQL 5.7 基於GTID搭建主從複製MySql
- MYSQL5.7.22 原始碼安裝 主從搭建MySql原始碼
- 搭建MySQL主從實現Django讀寫分離MySqlDjango
- Docker Compose搭建MySQL主從複製叢集DockerMySql
- MYSQL主主複製的搭建MySql