本文主要給大家簡單講講百萬級mysql從庫如何搭建,相關專業術語大家可以上網查查或者找一些相關書籍補充一下,這里就不涉獵了,我們就直奔主題吧,希望百萬級mysql從庫如何搭建這篇文章可以給大家帶來一些實際幫助。
1.當前mysql:Ucloud高可用數據庫實例,所屬區域在北京。 2.異地容災需求、跨平臺同步、后期的異地雙活需求。 3.新建從庫:阿里云華南自建mysql。
    1.Ucloud數據庫實例基于mysql原版進行了二次開發,在結構上有些調整,在為每個實例搭配一個phpadmin進行管理,算是比較簡單。高可用實例主庫已做雙主熱備。Mysql5.7后支持一從多主。
    2.Aliyun數據庫實例也進行過調整,修改比較多,對mysql庫管控比較嚴以配合控制臺的數據庫管理。
    3.Aliyun數據庫管理提供DTS工具,用于遷移數據,功能比較強大:遷移粒度、持續數據遷移(間接達到數據同步)、適合環境多。不適用當前需求原因:DTS遷移自建數據庫需要公網訪問源實例,太不安全。
    4.跨平臺異地雙活目前來看只能通過自建實現,業務架構還要大幅度調整。先實現跨平臺異地備份吧。
    5.Mysl同步的數據包默認是明文傳輸,支持ssl驗證,但在云平臺上似乎不好實現(內網訪問),先通過使用安全組控制訪問解決安全問題,后期建立***,包傳輸走隧道改進。
Mysql主(10.10.123.231):ucloud北京機房、高可用實例、內網訪問、版本為5.6.20-ucloudrel1-log Mysql從(172.17.3.42):aliyun華南自建
   1.準備工作:
    aliyun平臺新建ECS實例;根據源mysql版本安裝相近版本,選擇的mysql5.6.38,下載rpm包后,使用yum安裝;初始化數據庫,修改配置文件,并啟動。
    考慮到后期會使用DTS,按建議添加配置;mysql5.6后添加了GTID作用于同步,主從配置要一致:
server_id=23 gtid_mode=on enforce_gtid_consistency=on log_bin=mysql_bin binlog_format=row binlog_row_image=full log-bin-trust-function-creators=1
2.數據導入:從ucloud控制臺找到源mysql的最新備份,下載并導入到自建的mysql中。
   下載備份遇到問題:瀏覽器能正常下載,在linux下使用wget下載報403
    解決辦法:對下載地址用引號引入。
   備份壓縮包接近40G,使用source導入耗時超過一天。
3.搭建端口轉發(類似于mysql代理云服務器)
   選擇一臺與源mysql同內網的centos 7 (內網IP:10.10.123.233,外網IP:123.123.123.123),配置iptables轉發3306端口的流量,實現新建的mysql實例訪問到主庫。
# echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A PREROUTING -d 10.10.123.233 -p tcp --dport 3306 -j DNAT --to-destination 10.10.123.231:3306 # iptables -t nat -A POSTROUTING -d 10.10.123.231 -p tcp --dport 3306 -j SNAT --to-source 10.10.123.233
  并在新建從庫中測試好連通性。
4.主從配置
主要命令: > GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%' IDENTIFIED BY ‘123456’; //添加主從同步的用戶 > change master to \ master_host=”123.123.123.123”,\ master_port=3306,\ master_user=’slave’,\ master_password=’123456’,\ master_log_file=’mysql-bin.000383’,\ master_log_pos=’888039274’; //配置主庫信息 > start slave; > show slave status\G;
    獲取同步的binlog文件和位置:下載的備份文件中有,在文件前100行可以找到(推斷ucloud備份是用mysqldump命令配合--single-transaction --master-data=2參數)。
  1.查看主從同步,報錯:無法從master獲取日志
   Last_IO_Error: Relay log write failure: could not queue event from master
   原因:配置主從同步的binlog位置異常,需要重新指定。
> show master status; > show master logs; //查看可用的binlog文件 > show binlog events in 'mysql-bin.000383' from 888039274 limit 2; //指定開始位置和顯示數量
  果然是個比較特殊的位置,直接在mysql下查不到。還好還可以使用mysqlbinlog工具查看。
  下載binlog,解壓得到mysql-bin.000383文件
# mysqlbinlog --start-position=888039200 --stop-position=888039300 mysql-bin.000383 //用大概的位置查找,報錯
  只能全部導出,在定位了:
# mysqlbinlog mysql-bin.000383 > 383bin.log
  查找到的范圍為:
  重新配置position位置,并重啟slave進程即可。
  2.查看主從同步狀態,報錯:重復鍵問題,可能是剛剛調整了log_position導致的
考慮到先只做備份,將類似錯誤忽略即可。
    解決辦法:在mysqld配置文件中添加 slave-skip-errors = 1062,并重啟mysql服務即可。
百萬級mysql從庫如何搭建就先給大家講到這里,對于其它相關問題大家想要了解的可以持續關注我們的行業資訊。我們的板塊內容每天都會捕捉一些行業新聞及專業知識分享給大家的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。