mysql集群部署

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ù)器配置完成。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容