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