线上mysql数据库不停机的环境下,如何添加新的从机
更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)在工作中,主从环境搭的多了,但是,基本上都是在DBSERVER停机(游戏公司)的情况下搭建的,今天突
在工作中,主从环境搭的多了,但是,基本上都是在DB SERVER停机(游戏公司)的情况下搭建的,今天突然被一技术官问,如何在线添加主从,回答的大概思路,但是没有实践过,下面,我就测试一下。各位也可以先想想自己的思路:mysql 5.1版本,二进制日志文件(时间长了,有些二进制日志定期清除了),pos号
注:在mysql 5.6版本中,已经有基于GTID的主从复制(即:不需要知道日志文件和position号),只需还原最新的备份就可实现,,这里只讨论mysql 5.1
一.目前的基本环境:
主DB:192.168.1.101
从DB1:192.168.1.102
从DB2:192.168.1.103(准备在线添加做为从机的mysql数据库)
数据库版本:mysql 5.1.61(select version())
服务器版本:red hat linux 6
注:目前主从正常(show slave status\G),同步的数据库为 login
3台DB server的备份软件(xtrbackup)都已经安装完成
同步的表为innodb引擎的表,不然用xtrabackup还是会锁表
假设环境为:现在login库下的表a,备份的时候插入数据,最终行为5418272
注:思路是备份,可是用mysqldump备份会锁表,如果数据量很大的话,线上环境肯定不允许使用mysqldump备份
所以,我们采用的xtrabackup来进行在线热备,至于,它的原理,请各位自行google
二.部署实例:
1.主DB,线上数据正常写入的同时我实施备份
mysql> insert into a select * from a; [root@client101 backup]# innobackupex --user=root --password=kongzhong --defaults-file=/etc/my.cnf --port=3306 --database=login /tmp/backup/ >/tmp/backup/innoback.log 2>&1 # 备份完成后,可以查看备份文件目录下, xtrabackup_binlog_info 此文件会记录主上的日志和position号 [root@client101 2014-02-22_07-43-36]# cat xtrabackup_binlog_info
2.将备份文件压缩,并传送到从DB2(192.168.1.103)上,用于在上面进行还原
[root@client101 backup]# tar zcvf login.tar 2014-02-22_07-43-36 [root@client101 backup]# scp login.tar 192.168.1.103:/tmp/
3.从DB2上,解压刚才的备份,并用于恢复
[root@client103 tmp]# tar -xf login.tar # 应用日志,保证数据一致 [root@client103 tmp]# innobackupex --apply-log /tmp/2014-02-22_07-43-36/ # 停mysql [root@client103 mysql]# /etc/init.d/mysqld stop # mysql数据目录下的所有文件移到/tmp/mysqlbackup/下,不然,恢复有问题 # [这里建议只复制数据文件,不建议复制(日志,索引,innodb共享表空间,innodb日志文件,慢日志等)] [root@client103 mysql]# mv /var/lib/mysql/* /tmp/mysqlback # 恢复数据 [root@client103 mysql]# innobackupex --copy-back /tmp/2014-02-22_07-43-36/ # 将原数据库的内容复制mysql数据目录(这里就是我认为这个软件不好的地方,大家也可以给点建议) [root@client103 mysqlback]# mv /tmp/mysqlbac k/* /var/lib/mysql/ # 将数据目录的权限修改为mysql权限 [root@client103 mysql]# chown mysql. /var/lib/mysql/ # 启动数据库 [root@client103 mysql]# /etc/init.d/mysqld start # 验证数据的一致性:5418272(主上的行) mysql> select count(*) from a; +----------+ | count(*) | +----------+ | 5418272 | +----------+
4.将从DB2的主机指向主DB1
# 刚才回复后,会有个文件:xtrabackup_binlog_pos_innodb --> 此文件记录了备份时日志文件和pos号 [root@client103 mysql]# cat xtrabackup_binlog_pos_innodb /var/lib/mysql/mysql-101-bin.000008 2423 # 建立主从关系 mysql> change master to master_host='192.168.1.101', -> master_user='slave', -> master_password='slave', -> master_log_file='mysql-101-bin.000008', -> master_log_pos=2423; # 开启同步 mysql> start slave; # 查看同步状态 mysql> show slave status\G;
5.此时如果都为yes,则主从则建立完毕!大家可自行测试
注:
还有一种方式在线添加主从,即原本的从机只做冗余,可以在从机暂时停止主从,
然后,在从机上执行备份,看当前从机上,日志执行到哪个文件,哪个位置(master的日志文件和pos号)
如果各位对此文章有异议或有更好的方式,欢迎反馈,大家共同进步!
本文出自 “没有伞的孩子必须努力奔跑” 博客,请务必保留此出处

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

MySQL和MariaDB的主要區別在於性能、功能和許可證:1.MySQL由Oracle開發,MariaDB是其分支。 2.MariaDB在高負載環境中性能可能更好。 3.MariaDB提供了更多的存儲引擎和功能。 4.MySQL採用雙重許可證,MariaDB完全開源。選擇時應考慮現有基礎設施、性能需求、功能需求和許可證成本。

SQL是一種用於管理關係數據庫的標準語言,而MySQL是一個使用SQL的數據庫管理系統。 SQL定義了與數據庫交互的方式,包括CRUD操作,而MySQL實現了SQL標準並提供了額外的功能,如存儲過程和触發器。

MySQL和phpMyAdmin可以通過以下步驟進行有效管理:1.創建和刪除數據庫:在phpMyAdmin中點擊幾下即可完成。 2.管理表:可以創建表、修改結構、添加索引。 3.數據操作:支持插入、更新、刪除數據和執行SQL查詢。 4.導入導出數據:支持SQL、CSV、XML等格式。 5.優化和監控:使用OPTIMIZETABLE命令優化表,並利用查詢分析器和監控工具解決性能問題。

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

在C 中處理高DPI顯示可以通過以下步驟實現:1)理解DPI和縮放,使用操作系統API獲取DPI信息並調整圖形輸出;2)處理跨平台兼容性,使用如SDL或Qt的跨平台圖形庫;3)進行性能優化,通過緩存、硬件加速和動態調整細節級別來提升性能;4)解決常見問題,如模糊文本和界面元素過小,通過正確應用DPI縮放來解決。

Macosandlinuxbothofferuniquerenths:Macosprovidesa-frignlylexperienceWithExcelenthardArdWareIntegration,而Lilinuxexcelsinflexibilitionallibility andCommunitysupport.macos,evartednebyBybyBybyBybyByapple,issone bybyapple,seknoybyapple

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。
