您好,登錄后才能下訂單哦!
系統(tǒng)環(huán)境及架構(gòu)
#主機(jī)名 ???系統(tǒng)版本 ???????mysql版本 ?ip地址 mysqlMaster ???centos7.4 ???????mysql5.7 ???????192.168.1.42 mysqlSlave ???centos7.4 ???????mysql5.7 ???????192.168.1.43 #vip:192.168.1.41
在master和slave上分別進(jìn)行數(shù)據(jù)庫的安裝
yum?install?epel*??-y?&&?yum?clean?all?&&?yum?makecache? rpm?-Uvh?http://repo.mysql.com/mysql57-community-release-el7.rpm yum?clean?all?&&?yum?makecache yum?install?gcc?gcc-c++?openssl-devel?mysql?mysql-server?mysql-devel?-y
創(chuàng)建數(shù)據(jù)庫文件存放路徑
mkdir?/data/mysql?-p chown?-R?mysql:mysql?/data/mysql
配置mysql配置文件
#在mysqlMaster上配置mysql配置文件
vi?/etc/my.cnf [mysqld] server-id?=?1 #全局唯一,每臺都不能一樣 log-bin?=?mysql-bin #log-bin表示開啟二進(jìn)制日志記錄,mysql-bin表示日志文件的命名格式,會生成mysql-bin.0001?等等 relay-log?=?mysql-relay-bin #指定中繼日志格式(拉取主mysql日志后,在從庫上生成的日志) replicate-wild-ignore-table=mysql.% #指定那些庫或則表不進(jìn)行同步,mysql是庫名,.%表示下面所有的表,mysql.user??表示不同不mysql庫下的user表 replicate-wild-ignore-table=test.% replicate-wild-ignore-table=information_schema.% #replicate-wild-do-table=boke.% #表示同步那個(gè)庫 #注意:不要在主庫上使用binlog-do-db?或 binlog-ignore-db選項(xiàng) #也不要在從庫上使用 replicate-do-db?或 replicate-ignore-db?選項(xiàng),因?yàn)檫@有可能產(chǎn)生跨庫更新失敗的問題.推薦從庫上使用 replicate_wild_do_table?和 replicate_wild_ignore_table?這兩個(gè)選項(xiàng)來解決復(fù)制過濾問題 datadir=/data/mysql socket=/data/mysql/mysql.sock user=mysql symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid character-set-server=utf8 [mysql] socket=/data/mysql/mysql.sock default-character-set=utf8 [client] socket=/data/mysql/mysql.sock default-character-set=utf8 user=root password=NCYD-tianyu@0791 #若是不寫上這個(gè)字段,在本機(jī)用命令進(jìn)入mysql會報(bào)錯(cuò),提示默認(rèn)路徑/var/lib/mysql/mysql.sock找不到
在mysqlSlave上配置mysql配置文件
vi?/etc/my.cnf [mysqld] server-id?=?2 log-bin?=?mysql-bin relay-log?=?mysql-relay-bin replicate-wild-ignore-table=mysql.% replicate-wild-ignore-table=test.% replicate-wild-ignore-table=information_schema.% datadir=/data/mysql socket=/data/mysql/mysql.sock user=mysql symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid character-set-server=utf8 [mysql] socket=/data/mysql/mysql.sock default-character-set=utf8 [client] socket=/data/mysql/mysql.sock default-character-set=utf8 user=root password=NCYD-tianyu@0791
#若是不寫上這個(gè)字段,在本機(jī)用?命令?進(jìn)入mysql會報(bào)錯(cuò),提示默認(rèn)路徑/var/lib/mysql/mysql.sock找不到,先初始化數(shù)據(jù)庫(需要進(jìn)行初始化在/data/mysql目錄里生成必要的信息)
#mysql5.7.7以后的初始化方法 mysqld?--initialize?--user=mysql?--datadir=/data/mysql #mysql5.7.7以前的初始化方法 mysql_install_db?--user=mysql?--datadir=/data/mysql 分別啟動主從數(shù)據(jù)庫 #在centos7里面,必須先關(guān)閉selinux,否在無法啟動mysqld systemctl?start?mysqld 分別為主從mysql做安全加固 #查到上一步,首次啟動mysql,系統(tǒng)自動生成的密碼( cat?/var/log/mysqld.log?|grep?pass?。?mysql_secure_installation #使用該命令更改隨機(jī)root密碼(修改為 NCYD-tianyu@0791?。?手動同步數(shù)據(jù)(假如現(xiàn)在的環(huán)境,主上已經(jīng)有數(shù)據(jù)了,從是新的)
1:在主上數(shù)據(jù)庫中創(chuàng)建用于復(fù)制的用戶,并授權(quán) mysql>?GRANT?REPLICATION?SLAVE?ON?*.*?to?'tongbu'@'192.168.1.43'?identified?by?'123456789'; 2:在主mysql上先鎖表(使其所有表變成只讀狀態(tài)) mysql>?flush?tables?with?read?lock; #不要退出終端,否在這個(gè)鎖就失效了 3:再開啟另一個(gè)命令行終端,使用myqldump等工具將數(shù)據(jù)導(dǎo)出(或則直接打包存儲mysql數(shù)據(jù)的目錄,并發(fā)送到從機(jī)上) 4:將導(dǎo)出數(shù)據(jù)復(fù)制到從機(jī)上,并創(chuàng)建新庫并導(dǎo)入數(shù)據(jù) 互相置從,互相置主(以達(dá)到雙主模式)
在mysqlMaster上將mysqlSlave設(shè)置為自己的主角色服務(wù)器
mysql>?show?master?status; #查看mysqlSlave的狀態(tài)(記錄File名字,和Position) change?master?to master_host?=?'192.168.1.43', master_user?=?'tongbu', master_password?=?'123456789', master_log_file?=?'mysql-bin.000002', master_log_pos?=?1006; mysql>?start?slave;??????#啟動slave端的復(fù)制進(jìn)程(某些版本是:slave?start;?) mysql>?show?slave?status\G??#查看slaves端的I/O進(jìn)程,與SQL進(jìn)程
在從上將mysqlMaster設(shè)置為自己的主角色服務(wù)器
mysql>?show?master?status; #查看mysqlMaster的狀態(tài)(記錄File名字,和Position) change?master?to master_host?=?'192.168.1.42', master_user?=?'tongbu', master_password?=?'123456789', master_log_file?=?'mysql-bin.000002', master_log_pos?=?1006; mysql>?start?slave;??????#啟動slave端的復(fù)制進(jìn)程 mysql>?show?slave?status\G??#查看slaves端的I/O進(jìn)程,與SQL進(jìn)程
驗(yàn)證是否同步
1:第一驗(yàn)證在myssqlMaster上創(chuàng)建庫,mysqlSlave上是否存在
2:第二驗(yàn)證在mysqlSlave上創(chuàng)建庫,mysqlMaster上是否存在
鄭州不孕不育醫(yī)院:http://jbk.39.net/yiyuanzaixian/zztjyy/
安裝keepalived實(shí)現(xiàn)VIP切換,達(dá)到高可用
yum?install?keepalived?-y #在mysqlMaster和mysqlSlave上都創(chuàng)建檢查mysql的檢查腳本,并賦予執(zhí)行權(quán)限 touch?/etc/keepalived/mysql_check.sh chmod?+x?/etc/keepalived/mysql_check.sh
vi?/etc/keepalived/mysql_check.sh #!/bin/bash #slave_is=(?$(mysql?-uroot?-pNCYD-tianyu@0791?-e?"show?slave?status\G"?|?grep?"Slave_.*_Running"?|?awk?'{print?$2}')?) 在新版本的myql中,直接將密碼寫在命令行,會進(jìn)行安全提示,解決辦法是將其寫在mysql的配置文件里的?[client]?字段里,寫法見上面mysql的配置文件 slave_is=(?$(mysql?-e?"show?slave?status\G"?|?grep?"Slave_.*_Running"?|?awk?'{print?$2}')?) if?[?"${slave_is[0]}"?=?"Yes"?-a?"$slave_is[1]"?=?"Yes"] then exit?0 else exit?1 fi
#注意,keepalived檢查?腳本?vrrp_script,只認(rèn)兩個(gè)返回值,0表示正常,非0表示不正常(這在寫腳本是要注意),不正常就要做相關(guān)的切換
配置keepalived,以實(shí)現(xiàn)高可用
vi?/etc/keepalived/keepalived.conf global_defs?{ ???notification_email?{ ?????acassen@firewall.loc ?????failover@firewall.loc ?????sysadmin@firewall.loc ???} ???notification_email_from?Alexandre.Cassen@firewall.loc ???smtp_server?192.168.200.1 ???smtp_connect_timeout?30 ???router_id?LVS_DEVEL ???vrrp_skip_check_adv_addr ???#vrrp_strict #注意:當(dāng)你發(fā)現(xiàn)無法ping通虛擬VIP時(shí),建議將此行注釋掉 ???vrrp_garp_interval?0 ???vrrp_gna_interval?0 } vrrp_script?mysql_check?{ script?"/etc/keepalived/mysql_check.sh" #這個(gè)腳本,若是發(fā)現(xiàn)不執(zhí)行,可以檢查他的權(quán)限,777是不可以的,日志提示不安全,可以直接chmod?+x?/etc/keepalived/mysql_check.sh?就行 #script?"shutdown?-r?now" #或者,直接用命令進(jìn)行調(diào)試 interval?2 weight?2 } vrrp_instance?VI_1?{ ????state?MASTER #mysqlMaster上是MASTER;mysqlSlave上是BACKUP ????interface?ens192 ????virtual_router_id?52 ????priority?100 #mysqlMaster上是100;mysqlSlave上是90 ????advert_int?1 ????nopreempt #配置VIP(注意:故障切換搶占模式,盡量關(guān)閉,默認(rèn)是開啟的,這個(gè)參數(shù)只需要在高優(yōu)先級上設(shè)置即可) ????authentication?{ ????????auth_type?PASS ????????auth_pass?1111 ????} track_script?{ #調(diào)用上面定義檢查mfsmaster的腳本 ????????mysql_check ????} ????virtual_ipaddress?{ ????????192.168.1.41/24?dev?ens192 ????} }
啟動keepalived
systemctl?start?keepalived
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。