安裝mysql5.6
1.首先宿主機(jī)是win10系統(tǒng),安裝的VM VirtualBox,新建三個(gè)虛擬主機(jī)(虛擬主機(jī)安裝的是centos7)戳晌,此過程就不再贅述鲫尊,不清楚的小伙伴可以查看我的一篇“VM VirtualBox安裝centos7、設(shè)置IP”文章躬厌。
2.檢查系統(tǒng)中是否已安裝 MySQL
rpm -qa | grep mysql
返回空值的話马昨,就說明沒有安裝 MySQL 。
3.查看已安裝的 Mariadb 數(shù)據(jù)庫版本
rpm -qa|grep -i mariadb
4.卸載已安裝的 Mariadb 數(shù)據(jù)庫
rpm -qa|grep mariadb|xargs rpm -e --nodeps
5.下載安裝包文件
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
6.安裝mysql-community-release-el7-5.noarch.rpm包
rpm -ivh mysql-community-release-el7-5.noarch.rpm
7.安裝mysql扛施。
yum install mysql-server
8.檢查mysql是否安裝成功
rpm -qa | grep mysql
9.啟動(dòng)mysql服務(wù)
systemctl start mysqld.service #啟動(dòng) mysql
systemctl restart mysqld.service #重啟 mysql
systemctl stop mysqld.service #停止 mysql
systemctl enable mysqld.service #設(shè)置 mysql 開機(jī)啟動(dòng)
mysql常用文件路徑:
/etc/my.cnf 這是mysql的主配置文件
/var/lib/mysql mysql數(shù)據(jù)庫的數(shù)據(jù)庫文件存放位置
/var/logs/mysqld.log 數(shù)據(jù)庫的日志輸出存放位置
9.設(shè)置密碼
mysql5.6 安裝完成后鸿捧,它的 root 用戶的密碼默認(rèn)是空的,我們需要及時(shí)用 mysql 的 root 用戶登錄(第一次直接回車疙渣,不用輸入密碼)匙奴,并修改密碼。
mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("這里輸入root用戶密碼") where User='root';
mysql> flush privileges;
10.設(shè)置遠(yuǎn)程主機(jī)登錄
mysql> GRANT ALL PRIVILEGES ON . TO 'your username'@'%' IDENTIFIED BY 'your password';
執(zhí)行以下命令妄荔,為root 用戶添加遠(yuǎn)程登錄的能力泼菌。
mysql> GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY "123456";
11.如果還不能用數(shù)據(jù)庫工具進(jìn)行連接,防火墻需要開放對(duì)應(yīng)端口
firewall添加端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重啟防火墻
systemctl restart firewalld.service
查看所有開放的端口
firewall-cmd --list-ports
連接成功
一主多從配置
整體架構(gòu)
Master節(jié)點(diǎn)配置
主庫配置主要包含開啟binlong日志啦租,設(shè)置server-id
修改/etc/my.cnf哗伯。
[mysqld]
#開啟binlog日志功能
log_bin=mysql-bin
#設(shè)置server-id
server-id=1
sync-binlog=1
#設(shè)置忽略的數(shù)據(jù)庫
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
binlog-ignore-db=mysql
#讀寫都可以
read-only = 0
注解:sync_binlog”:這個(gè)參數(shù)是對(duì)于MySQL系統(tǒng)來說是至關(guān)重要的,他不僅影響到Binlog對(duì)MySQL所帶來的性能損耗篷角,而且還影響到MySQL中數(shù)據(jù)的完整性焊刹。對(duì)于“sync_binlog”參數(shù)的各種設(shè)置的說明如下:
sync_binlog=0,當(dāng)事務(wù)提交之后,MySQL不做fsync之類的磁盤同步指令刷新binlog_cache中的信息到磁盤虐块,而讓Filesystem自行決定什么時(shí)候來做同步俩滥,或者cache滿了之后才同步到磁盤。
sync_binlog=n贺奠,當(dāng)每進(jìn)行n次事務(wù)提交之后霜旧,MySQL將進(jìn)行一次fsync之類的磁盤同步指令來將binlog_cache中的數(shù)據(jù)強(qiáng)制寫入磁盤。
在MySQL中系統(tǒng)默認(rèn)的設(shè)置是sync_binlog=0儡率,也就是不做任何強(qiáng)制性的磁盤刷新指令挂据,這時(shí)候的性能是最好的,但是風(fēng)險(xiǎn)也是最大的喉悴。因?yàn)橐坏┫到y(tǒng)Crash棱貌,在binlog_cache中的所有binlog信息都會(huì)被丟失。而當(dāng)設(shè)置為“1”的時(shí)候箕肃,是最安全但是性能損耗最大的設(shè)置婚脱。因?yàn)楫?dāng)設(shè)置為1的時(shí)候,即使系統(tǒng)Crash勺像,也最多丟失binlog_cache中未完成的一個(gè)事務(wù)障贸,對(duì)實(shí)際數(shù)據(jù)沒有任何實(shí)質(zhì)性影響。
保存之后重啟數(shù)據(jù)庫
systemctl restart mysqld
登錄master吟宦,并且給從庫進(jìn)行授權(quán)操作篮洁,授權(quán)之后刷新權(quán)限。
-- 授權(quán)
mysql> grant replication slave on . to 'root(用戶名)'@'%' identified by 'root(密碼)';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on . to 'root'@'%' identified by 'root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
-- 刷新權(quán)限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
查看主庫Master的狀態(tài)殃姓。(File袁波、Position值后面配置從庫要用到)
mysql> SHOW MASTER STATUS;
Slave節(jié)點(diǎn)配置
從庫開啟relay-log中繼日志嚎朽,并且制定server-id恶座。
編輯/etc/my.cnf配置文件
[mysqld]
log_bin=mysql-bin
sync-binlog=1
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#指定server id,slave2機(jī)器配置為3
server-id=2
#指定中繼日志名稱
relay_log=mysql-relay-bin
#開啟數(shù)據(jù)庫只讀
read_only=1
保存之后重啟數(shù)據(jù)庫
systemctl restart mysqld
登錄兩臺(tái)slave服務(wù)器,創(chuàng)建連接到master服務(wù)器進(jìn)行同步款票。
注意:執(zhí)行命令時(shí)踏幻,參數(shù)必須是自己對(duì)應(yīng)的配置枷颊,master_log_file 和 master_log_pos 為主服務(wù)器配置完成后對(duì)應(yīng)的參數(shù)
mysql> change master to master_host='192.168.56.101',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000006',master_log_pos=120;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
啟動(dòng)slave
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
查看slave狀態(tài),主要觀察IO線程是否啟動(dòng)该面。如果 Slave_IO_Running夭苗、Slave_SQL_Running不是yes,說明連接主服務(wù)器不成功隔缀,需要查看原因题造,可以到日志error.log文件查看問題
mysql> show slave status \G;
對(duì)從庫進(jìn)行鏈接授權(quán):
mysql> grant all privileges on . to 'root'@'%' identified by 'root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
小結(jié):以上即為mysql一主多從配置,在實(shí)際生產(chǎn)中我們可以設(shè)置主服務(wù)器進(jìn)行寫操作猾瘸,從服務(wù)器進(jìn)行讀操作晌梨,每次主服務(wù)器會(huì)自動(dòng)同步數(shù)據(jù)到所有從服務(wù)器桥嗤。
注意:主服務(wù)器數(shù)據(jù)進(jìn)行ID自增時(shí),要保證任意從服務(wù)器中數(shù)據(jù)ID不能與主服務(wù)器發(fā)生沖突仔蝌,否則會(huì)導(dǎo)致從服務(wù)器的slave服務(wù)掛掉,數(shù)據(jù)同步失效荒吏。此時(shí)我們需要?jiǎng)h除有沖突的數(shù)據(jù)敛惊,登錄從服務(wù)器,先停止slave绰更,再重新啟動(dòng)slave
stop slave;
strat slave;