mysql集群部署
一、軟件準(zhǔn)備
MySQL版本采用 5.6.35,通過(guò) Oracle 官方網(wǎng)站下載
也可以直接從HTTP文件服務(wù)器上獲取:
生產(chǎn)環(huán)境:
wget http://download.cloud.pub/mysql/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
二、安裝MySQL
1環(huán)境準(zhǔn)備
MySQL采用解壓二進(jìn)制安裝包方式安裝,兩個(gè)節(jié)點(diǎn)采用一主一從的部署架構(gòu),MySQL
禁止運(yùn)行在操作系統(tǒng)的root賬戶下。
操作系統(tǒng)環(huán)境:
用戶:mysql
用戶組:mysql
數(shù)據(jù)庫(kù)環(huán)境:
Basedir : /usr/local/mysql
Datadir: /data
端口:3306
root用戶:不啟用遠(yuǎn)程登錄
slave用戶: 主從同步
pacloud用戶:業(yè)務(wù)用戶,用戶可以自行定義
2安裝主節(jié)點(diǎn)(Master)
Step 1.創(chuàng)建用戶及用戶組
以root用戶登錄,創(chuàng)建用戶及用戶組:
創(chuàng)建MySQL運(yùn)行賬戶:
[root@aldb]# groupadd mysql
[root@aldb]# useradd–r –g mysql mysql
設(shè)置mysql用戶密碼
[root@aldb]# passwd mysql
創(chuàng)建MySQL DBA賬戶:
[root@aldb]# groupadd dba
[root@aldb]# useradd–r –g dba dba
設(shè)置dba用戶密碼
[root@aldb]# passwd dba
Step 2.創(chuàng)建數(shù)據(jù)庫(kù)文件存儲(chǔ)目錄
[root@aldb]# mkdir /data
注:如果采用外部存儲(chǔ),則/data應(yīng)該為掛載點(diǎn)。
設(shè)置權(quán)限
[root@aldb]# chown–R mysql:mysql /data
Step 3.解壓 MySQL 安裝包
[root@aldb]# cd /software
[root@aldb software]# tar–xzvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
[root@aldb software]# mv mysql-5.6.35-linux-glibc2.5-x86_64
/usr/local/mysql
設(shè)置權(quán)限
[root@aldb]# chown–R mysql:mysql /usr/local/mysql
Step 4.安裝 MySQL
[root@aldb]# cd /usr/local/mysql/scripts/
[root@aldb scripts]#
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data
注:如果提示如下:
error while loading shared libraries: libaio.so.1: cannot open shared object file:
No such file or directory
則需要安裝libaio相關(guān)系統(tǒng)組件:
[root@aldb]# yum install libaio*
Step 5.配置文件
[root@aldb]# cd /usr/local/mysql/support-files/
[root@aldb support-files]# mv /etc/my.cnf f /etc/my.cnf.bak
[root@aldb support-files]# cp my-default.cnf /etc/my.cnf
[root@aldb support-files]# cp mysql.server /etc/init.d/mysql
[root@aldb]# vim /etc/init.d/mysql
添加以下兩行:
basedir=/usr/local/mysql
datadir=/data
添加權(quán)限:
[root@aldb]# chown mysql:mysql /etc/init.d/mysql
[root@aldb]# chown mysql:mysql /etc/my.cnf
[root@aldb]# chmod 775 /etc/init.d/mysql
Step 6.修改 my.cnf
在[mysqld]下添加以下幾行:
basedir = /usr/local/mysql
datadir = /data
innodb_buffer_pool_size = 5G
innodb_log_file_size = 4G
innodb_log_buffer_size = 10MB
max_connections = 16384
query_cache_size = 0
skip_name_resolve = off
auto_increment_offset = 2
auto_increment_increment = 20
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Step 7.配置環(huán)境變量
[root@aldb]# vim /etc/profile
添加以下兩行:
#Set MySQL Environment
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
[root@aldb]# source /etc/profile
Step 8.配置開機(jī)自動(dòng)啟動(dòng)
[root@aldb]# chkconfig --add mysql
[root@aldb]# chkconfig mysql on
Step 9.啟動(dòng)數(shù)據(jù)庫(kù)
[root@aldb]# su mysql
[mysql@aldb]$ service mysql start
Starting MySQL.. SUCCESS!
Step 10.設(shè)置數(shù)據(jù)庫(kù)賬戶登錄密碼
[root@aldb]# cd /usr/local/mysql/bin/
[root@aldb bin]# ./mysqladmin–u root password ‘XXXXXXXX’
Step 11.登錄數(shù)據(jù)庫(kù)
[root@aldb]# mysql–u root –p
Step 12. iptables配置 3306 端口
[root@aldb]# service iptables save
[root@aldb]# vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
注:一定要加在-A INPUT -j REJECT --reject-with icmp-host-prohibited前面
重啟iptables
[root@aldb]# service iptables restart
3安裝從節(jié)點(diǎn)(Slave)
從節(jié)點(diǎn)安裝步驟同主節(jié)點(diǎn),目錄結(jié)構(gòu)全部相同。
配置從節(jié)點(diǎn),啟動(dòng)從庫(kù)只讀:
[root@ECAM40124]# mysql–u root –p
mysql> set global read_only = 1
mysql> show global variables like '%read_only%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| innodb_read_only | OFF |
| read_only | ON |
| tx_read_only | OFF |
+------------------+-------+
3 rows in set (0.00 sec)
4主從配置
4.1主庫(kù)配置
Step 1.停止主節(jié)點(diǎn)
[root@aldb]# su mysql
[mysql@aldb]$ service mysql stop
Step 2.修改主節(jié)點(diǎn) my.cnf
[root@aldb]# vim /etc/my.cnf
[mysqld]
#啟用二進(jìn)制日志
log_bin = mysql-bin
server-id=77 #(通常使用當(dāng)前服務(wù)器 IP 地址的第 4 段)
binlog_format=row
Step 3.啟動(dòng)數(shù)據(jù)庫(kù)
[root@aldb]# su mysql
[mysql@aldb]$ service mysql start
Step 4.創(chuàng)建同步賬號(hào)
[root@aldb]# mysql–uroot –pxxxxx –e “GRANT REPLICATION
SLAVE,RELOAD,SUPER ON *.* TO‘slave’@’100.68.2.78’ IDENTIFIED BY ‘XXXXX’; ”
查看主庫(kù)狀態(tài):
mysql> flush privileges;
mysql> show master status;
注:記錄下mysql-bin.xxxx文件名和位置,會(huì)在從節(jié)點(diǎn)上用到。
4.2從庫(kù)配置
Step 1.停止從節(jié)點(diǎn)
[root@ECAM40124]# su mysql
[mysql@ECAM40124]$ service mysql stop
Step 2.修改主節(jié)點(diǎn) my.cnf
[root@ECAM40124]# vim /etc/my.cnf
[mysqld]
#啟用二進(jìn)制日志
log_bin = mysql-bin
server-id=78 #(通常使用當(dāng)前服務(wù)器 IP 地址的第 4 段)
binlog_format=row
Step 3.啟動(dòng)數(shù)據(jù)庫(kù)
[root@ECAM40124]# su mysql
[mysql@ECAM40124]$ service mysql start
Step 4.配置連接主數(shù)據(jù)庫(kù)
[root@ECAM40124]# mysql -uroot -pXXXXX -e "change master to
master_host='100.68.2.xxx',master_user='slave',master_password='XXXXX',master_l
og_file='mysql-bin.0000xxx',master_log_pos=xxx;"
注:
-pXXXXX表示從節(jié)點(diǎn) MySQL 用戶 root 的密碼;
master_password='XXXXX'表示主節(jié)點(diǎn)中 MySQL 用戶 slave 的密碼;
master_log_file='mysql-bin.0000xxx'必須為主節(jié)點(diǎn)的 log_file 名稱;
master_log_pos=xxx必須為主節(jié)點(diǎn)的位置編號(hào);
Step 5.開始同步
[root@ECAM40124]# mysql–u root -p
mysql> start slave;
mysql> show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注,如果Slave_IO_Running: Connecting,則說(shuō)明 slave 連不上 master,
或者pos錯(cuò)誤,網(wǎng)絡(luò)問(wèn)題,查看 master 上的 iptables 中 3306 端口的配置。
5.健康性驗(yàn)證
Step 1.在主庫(kù)創(chuàng)建 database
Step 2.在從庫(kù)查看 database
Step 3.在主庫(kù)創(chuàng)建表
Step 4.在從庫(kù)查看表
Step 5.在主庫(kù) insert 數(shù)據(jù)
Step 6.在從庫(kù)查看數(shù)據(jù)
Step 7.刪除驗(yàn)證數(shù)據(jù)
主庫(kù):drop table t_test;
從庫(kù):show tables;
5創(chuàng)建應(yīng)用賬號(hào)
登錄主庫(kù):
1.創(chuàng)建應(yīng)用賬號(hào)
CREATE USER 'pacloud'@'%' IDENTIFIED BY 'XXXXXXX';
GRANT ALL ON *.* TO 'pacloud'@'%' WITH GRANT OPTION;
flush privileges;
2.創(chuàng)建只讀賬號(hào)
CREATE USER 'readonly'@'%' IDENTIFIED BY 'XXXXXXX';
GRANT SELECT ON *.* TO 'readonly'@'%';
flush privileges;
3.創(chuàng)建備份賬號(hào)
CREATE USER 'export'@'%' IDENTIFIED BY '#Cloud@Backup!';
GRANT SELECT, SHOW, LOCK TABLES, TRIGGER ON *.* TO 'export'@'%';
flush privileges;
4、檢查從服務(wù)器復(fù)制功能狀態(tài):
??mysql> show slave status\G
??*************************** 1. row ***************************
??????????????Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.222 ?//主服務(wù)器地址
Master_User: mysync ?//授權(quán)帳戶名,盡量避免使用root
Master_Port: 3306 ???//數(shù)據(jù)庫(kù)端口,部分版本沒(méi)有此行
??????????????Connect_Retry: 60
??????????????Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 600 ???//#同步讀取二進(jìn)制日志的位置,大于等于Exec_Master_Log_Pos
??????????????Relay_Log_File: ddte-relay-bin.000003
??????????????Relay_Log_Pos: 251
??????????????Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes ???//此狀態(tài)必須YES
Slave_SQL_Running: Yes ???//此狀態(tài)必須YES
????????????????????......
注:Slave_IO及Slave_SQL進(jìn)程必須正常運(yùn)行,即YES狀態(tài),否則都是錯(cuò)誤的狀態(tài)(如:其中一個(gè)NO均屬錯(cuò)誤)。
以上操作過(guò)程,主從服務(wù)器配置完成。