MariaDB 主从同步与热备(14)
MariaDB數(shù)據(jù)庫(kù)管理系統(tǒng)是MySQL的一個(gè)分支,主要由開源社區(qū)在維護(hù),采用GPL授權(quán)許可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于現(xiàn)在閉源了,而能輕松成為MySQL的代替品.在存儲(chǔ)引擎方面,使用XtraDB來(lái)代替MySQL的InnoDB,MariaDB由MySQL的創(chuàng)始人Michael Widenius主導(dǎo)開發(fā),他早前曾以10億美元的價(jià)格,將自己創(chuàng)建的公司MySQL AB賣給了SUN,此后,隨著SUN被甲骨文收購(gòu)MySQL的所有權(quán)也落入Oracle的手中.MariaDB名稱來(lái)自MichaelWidenius的女兒Maria的名字.
MariaDB數(shù)據(jù)庫(kù)自身提供的主從復(fù)制功能可以方便的實(shí)現(xiàn)數(shù)據(jù)的多處自動(dòng)備份,還能實(shí)現(xiàn)數(shù)據(jù)庫(kù)的拓展,多個(gè)數(shù)據(jù)備份不僅可以加強(qiáng)數(shù)據(jù)的安全性,通過(guò)實(shí)現(xiàn)讀寫分離還能進(jìn)一步提升數(shù)據(jù)庫(kù)的負(fù)載性能,為大規(guī)模企業(yè)MariaDB集群提供了有利的技術(shù)支撐.
MariaDB 主-從 同步配置
基于一臺(tái)服務(wù)器的數(shù)據(jù)復(fù)制,故得名單機(jī)熱備,主-備 Active-Standby
主-備方式,即指的是一臺(tái)服務(wù)器處于某種業(yè)務(wù)的激活狀態(tài)(即Active狀態(tài)),另一臺(tái)服務(wù)器處于該業(yè)務(wù)的備用狀態(tài)(即Standby狀態(tài)),主數(shù)據(jù)庫(kù)數(shù)據(jù)更新后,備份服務(wù)器同步數(shù)據(jù)只本機(jī)
◆兩臺(tái)同步執(zhí)行◆
1.安裝Mariadb,設(shè)置初始密碼,啟動(dòng)服務(wù),并設(shè)置開機(jī)自啟動(dòng),這里的配置步驟應(yīng)在兩臺(tái)主機(jī)上同步執(zhí)行
yum install -y mariadb mariadb-serversystemctl restart mariadbmysql_secure_installation2.修改MariaDB主配置文件,寫入log-bin參數(shù)開啟二進(jìn)制日志文件,然后寫入server-id指定本臺(tái)MariaDB服務(wù)器的ID號(hào)(注意:這里主從不要重復(fù))
vim /etc/my.cnf[mysqld]log-bin=mysql-bin #開啟二進(jìn)制日志文件 server-id=12 #本臺(tái)MySQL服務(wù)器ID(主從不能重復(fù))systemctl restart mariadb #重啟生效◆主數(shù)據(jù)庫(kù)執(zhí)行◆
1.進(jìn)入主MariaDB數(shù)據(jù)庫(kù),授權(quán)給從數(shù)據(jù)庫(kù)登陸的賬號(hào),這里顯示二進(jìn)制日志文件大小并記錄下來(lái)
grant replication slave on *.* to "用戶名"@'%' identified by "密碼"; #創(chuàng)建用于從服務(wù)器登陸的賬號(hào)show master status; #顯示日志狀態(tài)MariaDB [(none)]> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 245 | | | +------------------+----------+--------------+------------------+ row in set (0.00 sec)◆從數(shù)據(jù)庫(kù)執(zhí)行◆
1.進(jìn)入從MariaDB數(shù)據(jù)庫(kù),使用主數(shù)據(jù)庫(kù)授權(quán)的用戶名,密碼,以及相應(yīng)的日志文件名稱 master_log_file,和日志文件位置 master_log_pos,此處在主數(shù)據(jù)庫(kù)上獲取即可
change master to master_host='服務(wù)器IP',master_user='授權(quán)賬號(hào)',master_password='密碼',master_log_file='日志文件',master_log_pos=文件位置;start slave; #啟用同步show slave status\G; #查看同步狀態(tài)注意:兩個(gè)狀態(tài)同時(shí)開啟即可Slave_IO_Running: Yes Slave_SQL_Running: YesMariaDB 主-主 同步配置
基于兩臺(tái)服務(wù)器的復(fù)制方式較多,故得名雙機(jī)熱備,雙主機(jī)方式即指兩種不同業(yè)務(wù)分別在兩臺(tái)服務(wù)器上互為主備狀態(tài)(即 Active-Standby和Standby-Active狀態(tài)),這里需要注意的是主-主同步配置,其實(shí)就是兩臺(tái)MariaDB數(shù)據(jù)庫(kù)互為主從,所以,要在兩臺(tái)主機(jī)間作兩次相同的操作
◆兩臺(tái)同步執(zhí)行◆
1.安裝MariaDB,設(shè)置初始密碼,啟動(dòng)服務(wù),并設(shè)置開機(jī)自啟動(dòng),這里的配置步驟應(yīng)在兩臺(tái)主機(jī)上同步執(zhí)行
yum install -y mariadb mariadb-serversystemctl restart mariadbmysql_secure_installation2.將 MariaDB1 的數(shù)據(jù)拷貝到 MariaDB2 上,實(shí)現(xiàn)數(shù)據(jù)的一致性,(注意:這里應(yīng)先鎖定表結(jié)構(gòu),防止數(shù)據(jù)不一致)
flush tables with read lock; #鎖定數(shù)據(jù)表為只讀模式mysqldump -u root -p --all-databases >back.sql #備份數(shù)據(jù)庫(kù)scp back.sql root@192.168.1.13:/root #將數(shù)據(jù)傳遞到遠(yuǎn)程主機(jī)unlock tables; #解除表鎖定mysql -uroot -p <back.sql #從數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)3.修改MariaDB主配置文件(注意:兩臺(tái)都要修改),開啟二進(jìn)制日志和制定服務(wù)器ID號(hào)
vim /etc/my.cnf[mysqld]log-bin=mysql-bin #開啟二進(jìn)制日志 server-id=10 #指定服務(wù)器ID號(hào)(兩臺(tái)不允許重復(fù)) replicate-do-db=test #要同步的數(shù)據(jù)庫(kù) binlog-ignore-db=mysql #不需要同步的數(shù)據(jù)庫(kù) binlog-ignore-db=information_schema #不需要同步的數(shù)據(jù)庫(kù) auto-increment-increment=2 #每次自增長(zhǎng)2 auto-increment-offset=1 #自增長(zhǎng)從1開始systemctl restart mariadb◆MariaDB1 執(zhí)行◆
1.進(jìn)入 MariaDB1 數(shù)據(jù)庫(kù),創(chuàng)建用于從數(shù)據(jù)庫(kù)登陸的賬號(hào)和密碼
grant replication slave on *.* to '用戶名'@'%' identified by '密碼'; #創(chuàng)建用于從數(shù)據(jù)庫(kù)登陸的用戶show master status; #查看二進(jìn)制文件名2.進(jìn)入 MariaDB2 數(shù)據(jù)庫(kù),同步數(shù)據(jù)
change master to master_host='主服務(wù)器IP',master_user='授權(quán)賬號(hào)',master_password='密碼',master_log_file='二進(jìn)制文名',master_log_pos=文件空間大小;start slave; #啟動(dòng)同步功能show slave status\G; #查看同步狀態(tài)◆MariaDB2 執(zhí)行◆
1.進(jìn)入 MariaDB2 數(shù)據(jù)庫(kù),創(chuàng)建用于從數(shù)據(jù)庫(kù)登陸的賬號(hào)和密碼
grant replication slave on *.* to '用戶名'@'%' identified by '密碼'; #創(chuàng)建用于從數(shù)據(jù)庫(kù)登陸的用戶show master status; #查看二進(jìn)制文件名2.進(jìn)入 MariaDB1 數(shù)據(jù)庫(kù),同步數(shù)據(jù)
change master to master_host='主服務(wù)器IP',master_user='授權(quán)賬號(hào)',master_password='密碼',master_log_file='二進(jìn)制文名',master_log_pos=文件空間大小;start slave; #啟動(dòng)同步功能show slave status\G; #查看同步狀態(tài)MariaDB 主-主-從 同步配置
主-主-從,字面意思就是,兩個(gè)主一個(gè)從,主要用于數(shù)據(jù)備份,一次性備份兩個(gè)主數(shù)據(jù)庫(kù)資源,這樣一個(gè)從數(shù)據(jù)庫(kù),就可以同時(shí)備份多個(gè)主數(shù)據(jù)庫(kù)了,節(jié)約了寶貴的服務(wù)器資源
◆兩臺(tái)主數(shù)據(jù)庫(kù)執(zhí)行◆
1.兩臺(tái)主服務(wù)器都需要安裝MySQL初始化并設(shè)置密碼
yum install -y mariadb mariadb-serversystemctl restart mariadbmysql_secure_installation2.兩臺(tái)主服務(wù)器都應(yīng)配置以下內(nèi)容(兩臺(tái)主MySQL都需要配置)
vim /etc/my.cnf #修改配置文件寫入以下內(nèi)容↓ log-bin=mysql-bin #開啟二進(jìn)制日志 server-id=147 #服務(wù)器ID號(hào)systemctl restart mariadb #重啟服務(wù)3.登陸主MySQL并創(chuàng)建用戶從服務(wù)器登陸的用戶 (兩臺(tái)主MySQL都需要配置)
mysql -uroot –p #登陸MySQLgrant replication slave on *.* to '授權(quán)用戶'@'%' identified by '密碼'; #創(chuàng)建從服務(wù)器用戶show master status; #顯示日志狀態(tài)◆從數(shù)據(jù)庫(kù)應(yīng)執(zhí)行的步驟◆ 切記此MySQL不能啟動(dòng)
1.修改從MySQL主配置文件
vim /etc/my.cnf寫入以下內(nèi)容↓[mysqld_multi] mysqld=/usr/bin/mysqld_safe mysqladmin=/usr/bin/mysqladmin log=/tmp/multi.log[mysqld147] #名稱后面加數(shù)字,后期啟動(dòng)用(不應(yīng)相同) port=3306 #端口號(hào)(不應(yīng)相同) pid-file=/var/lib/mysqla/mysqld.pid #MySQL進(jìn)程號(hào)保存位置 datadir=/var/lib/mysqla #數(shù)據(jù)文件保存位置 socket=/var/lib/mysqla/mysql.sock #指定登陸套接字 server-id=110 #ID號(hào),同一主從環(huán)境不能相同 user=mysql #MySQL登陸用戶名[mysqld148] #名稱后面加數(shù)字,后期啟動(dòng)用(不應(yīng)相同) port=3307 #端口號(hào)(不應(yīng)相同) pid-file=/var/lib/mysqlb/mysqld.pid #MySQL進(jìn)程號(hào)保存位置 datadir=/var/lib/mysqlb #數(shù)據(jù)文件保存位置 socket=/var/lib/mysqlb/mysql.sock #指定登陸套接字 server-id=110 #ID號(hào),同一主從環(huán)境不能相同 user=mysql #MySQL登陸用戶名2.初始化數(shù)據(jù)庫(kù)
mysql_install_db --datadir=/var/lib/mysqla --user=mysql #初始化數(shù)據(jù)庫(kù)a mysql_install_db --datadir=/var/lib/mysqlb --user=mysql #初始化數(shù)據(jù)庫(kù)b3.給相應(yīng)目錄賦予權(quán)限
cd /var/lib/ chown -R mysql:mysql /var/lib/mysqla/ #修改a文件權(quán)限 chown -R mysql:mysql /var/lib/mysqlb/ #修改b文件權(quán)限4.啟動(dòng)相應(yīng)服務(wù)器
mysqld_multi --defaults-file=/etc/my.cnf start 147 #開啟147服務(wù)器 mysqld_multi --defaults-file=/etc/my.cnf start 148 #開啟148服務(wù)器5.登陸147和148數(shù)據(jù)庫(kù)確定主從關(guān)系
mysql -P 3306 -S /var/lib/mysqla/mysql.sock #登陸147數(shù)據(jù)庫(kù) mysql -P 3306 -S /var/lib/mysqlb/mysql.sock #登陸148數(shù)據(jù)庫(kù) change master to master_host='服務(wù)器IP',master_user='授權(quán)賬號(hào)',master_password='密碼',master_log_file='日志文件',master_log_pos=文件位置;start slave; #啟用同步show slave status\G; #查看同步狀態(tài)轉(zhuǎn)載于:https://www.cnblogs.com/LyShark/p/10200141.html
總結(jié)
以上是生活随笔為你收集整理的MariaDB 主从同步与热备(14)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IdentityServer4-EF动态
- 下一篇: ios 性能优化(一)