日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

企业实战_07_MyCat 搭建Mysql 一主一从复制环境

發布時間:2024/9/27 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 企业实战_07_MyCat 搭建Mysql 一主一从复制环境 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接上一篇:企業實戰_06_MyCat 常用的分片算法
https://gblfy.blog.csdn.net/article/details/118770261

文章目錄

          • 一、 環境準備
            • 1. 主從復制搭建流程
            • 2. 服務器分布
          • 二、 MySql 主機節點操作如下
            • 2.1. 創建數據庫
            • 2.2. 初始化表結構及數據
            • 2.3. 驗證
            • 2.4. 數據備份
            • 2.5. 腳本同步
            • 2.6. 異常解決方案
          • 三、node2節點
            • 3.1. 創建order_db數據庫
            • 3.2. 將bak_imooc.sql導入到order_db數據庫中
          • 四、mysql主從復制賬號創建
            • 4.1. 登錄數據庫
            • 4.2. 創建主從復制的賬號
            • 4.3. 賬號授權
          • 五、 創建復制鏈路
            • 5.1. 登陸數據庫
            • 5.2. 查看復制鏈路幫助
            • 5.3. 建立復制的鏈路
            • 5.4. 查看鏈路
            • 5.5. 截圖如下
          • 六、 常規主從復制和非常規主從復制的區別
            • 6.1. 常規主從復制
            • 6.2. 非常規主從復制
            • 6.3. 解決方案
          • 七、設置過濾鏈路
            • 7.1. 查看change replication filter命令幫助 數據庫過濾
            • 7.2. 設置過濾鏈路 進行數據庫名映射
            • 7.3. 查看鏈路
          • 八、啟動復制鏈路,并監控
            • 8.1. 啟動復制鏈路
            • 8.2. 查看鏈路
          • 九、主從復制驗證
            • 9.1. 驗證思路
            • 9.2. 登錄node1節點
            • 9.3. 登錄node2節點

一、 環境準備
1. 主從復制搭建流程
第1步備份數據庫并記錄相關事務節點
第2步在源(主機)數據庫中,創建主從復制的用戶
第3步在新實例上恢復備份的數據庫
第4步在新實例上配置復制鏈路
第5步如果主機上的庫名和從機上的庫名不一致時,需要建立過濾鏈路
第6步在新實例上啟動復制鏈路
2. 服務器分布

數據庫架構升級為垂直分庫,依次搭建mysql主從復制,一主一從、一主二從、一主三從環境

主機名IP地址角色數據庫
node1192.168.92.101MYSQL、mycatimooc_db(主機物理)
node2192.168.92.102MYSQLorder_db(從機物理)
node3192.168.92.103MYSQLproduct_db(主機物理)
node4192.168.92.104MYSQLcustomer_db(從機物理)
二、 MySql 主機節點操作如下

聲明:提前啟動mysql

2.1. 創建數據庫
mysql -uroot -p -e"create database imooc_db"
2.2. 初始化表結構及數據
  • 這里為了演示,找了一個點上項目的表和數據,需要初始化一下
mysql -uroot -p imooc_db < imooc_db.sql 鏈接https://pan.baidu.com/s/1s2cFK-ZsQKSbpg8CtWdShw
提取碼n8bq
2.3. 驗證
# 登錄mysql mysql -uroot -p 輸入密碼:123456# 查看數據庫列表 show databases;# 使用imooc_db數據庫 use imooc_db;# 查看當前imooc_db數據庫下的表列表 show tables;

操作記錄

[root@node1 ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.34 MySQL Community Server (GPL)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | imooc_db | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.01 sec)mysql> use imooc_db; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase changed mysql> show tables; +-----------------------+ | Tables_in_imooc_db | +-----------------------+ | customer_balance_log | | customer_inf | | customer_level_inf | | customer_login | | customer_login_log | | customer_point_log | | order_cart | | order_customer_addr | | order_detail | | order_master | | product_brand_info | | product_category | | product_comment | | product_info | | product_pic_info | | product_supplier_info | | region_info | | serial | | shipping_info | | warehouse_info | | warehouse_proudct | +-----------------------+ 21 rows in set (0.00 sec)mysql> exit Bye [root@node1 ~]#
2.4. 數據備份

將imooc_db的表、數據、存儲過程、觸發器、事件備份成一個名稱叫bak_imooc.sql的文件中

mysqldump --master-data=2 --single-transaction --routines --triggers --events -uroot -p imooc_db > bak_imooc.sql

異常解決方案(沒遇到就跳過):
bash: mysqldump: command not found
mysqldump備份報Binlogging on server not active的解決

2.5. 腳本同步

將bak_imooc.sql同步到從機node2節點

[root@node1 ~]# scp bak_imooc.sql root@192.168.92.102:/root
2.6. 異常解決方案

mysqldump備份報Binlogging on server not active的解決

三、node2節點
3.1. 創建order_db數據庫
# 創建order_db數據庫 mysql -uroot -p -e"create database order_db"
3.2. 將bak_imooc.sql導入到order_db數據庫中
mysql -uroot -p order_db < bak_imooc.sql
四、mysql主從復制賬號創建

在MySql主機node1節點上,創建mysql 主從復制的賬號

4.1. 登錄數據庫
mysql -uroot -p #輸入密碼:123456
4.2. 創建主從復制的賬號
create user 'im_repl'@'192.168.92.%' identified by '123456';
4.3. 賬號授權

給主從復制的賬號賦予操作所有對象的replication slave權限

grant replication slave on *.* to 'im_repl'@'192.168.92.%';
五、 創建復制鏈路

在node2節點操作

5.1. 登陸數據庫
mysql -uroot -p
5.2. 查看復制鏈路幫助
\h change master to
5.3. 建立復制的鏈路
change master to master_host='192.168.92.101',master_user='im_repl',master_password='123456',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
  • master_host:主節點的ip
  • master_user:在主節點創建數據復制同步的用戶
  • master_password:主從復制用戶的密碼
  • MASTER_LOG_FILE:同步開始的時間點(開始同步的文件名,開始復制日志的事務點),這個記錄在備份同步的文件中
[root@node2 ~]# more bak_imooc.sql # 內容 CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;


異常解決方案(沒遇到則跳過):
Slave is not configured or failed to initialize properly. You must at least set --server-id

5.4. 查看鏈路
show slave status \G
5.5. 截圖如下


從 Slave_IO_Running: No 和Slave_SQL_Running: No2個參數的狀態,可以看出,主從復制鏈路已經建立好了,但是沒有啟動。尚未啟動,啟動之前需要做哪些準備?

六、 常規主從復制和非常規主從復制的區別
6.1. 常規主從復制
  • 主機上的數據庫名和從機上的數據庫名是一致的。
  • 舉個栗子:
    主機上的數據庫名叫gblfy_db,從機上的數據庫名也叫gblfy_db。

聲明:如果主從數據庫名都一致的話,可以直接啟動復制鏈路,跳過設置過濾鏈路。

6.2. 非常規主從復制

在垂直拆分中,當主從復制中,主機上的數據庫名和從機上的數據庫名不一致,從機上的數據庫名,按照我們的業務模塊名來命名的,應該做哪些操作呢?

舉個栗子:
主機上的數據庫名叫imooc_db,從機上的數據庫名,根據業務模塊來命令的叫order_db。

6.3. 解決方案

使用change replication filter設置即可,通過過濾鏈路把數據庫名進行映射

七、設置過濾鏈路
7.1. 查看change replication filter命令幫助 數據庫過濾
\h change replication filter
7.2. 設置過濾鏈路 進行數據庫名映射
# 主從數據庫名映射change replication filter replicate_rewrite_db=((imooc_db,order_db));
7.3. 查看鏈路
# 查看鏈路show slave status \G# 日志顯示過濾鏈路 Replicate_Rewrite_DB: (imooc_db,order_db)

注:現在已經建立好了過濾,通過率把數據庫名進行了重新命名

八、啟動復制鏈路,并監控
8.1. 啟動復制鏈路
start slave;
8.2. 查看鏈路
show slave status \G


正常如下圖,都是yes才對

0)
注:如果遇到mysql主從復制之異常解決— Slave_IO_Running: NO,請:
mysql主從復制之異常解決— Slave_IO_Running: NO

到目前為止,一主一從的復制鏈路已經創建完成,那如何驗證復制鏈路是否將數據同步到從機上呢?

九、主從復制驗證
9.1. 驗證思路
案例思路: 1. 登錄主機上數據庫,在主機上新增或者修改一個表的數據,會自動主從復制 2. 登錄從機上數據庫,查看在主機上修改一個表的數據,在從機上是否也被更改 3. 如果更改則說明復制鏈路成功,能正常進行主從復制功能;否則,查看日志,定位異常信息及制定解決方案
9.2. 登錄node1節點
#登錄數據路 mysql -uroot -p# 顯示當前mysql中的所有數據庫 show databases;# 使用指定數據庫 use imooc_db;# 顯示當前使用數據庫中的所有的表 show tables;# 查看region_info 的數據 select * from region_info ; 注:顯示沒有數據# 新增一條數據 INSERT INTO `region_info` VALUES (1, 0, '中國', 0);# 再次查看region_info 的數據 select * from region_info ;

9.3. 登錄node2節點
#登錄數據路 mysql -uroot -p# 顯示當前mysql中的所有數據庫 show databases;# 使用指定數據庫 use order_db;# 顯示當前使用數據庫中的所有的表 show tables;# 查看region_info 的數據 select * from region_info ;

從上面截圖可以看出,在node1節點的imooc_db的region_info表中添加的一條數據,node2節點的order_db的region_info表中也同步了這條數據,目前,一主一從的mysql環境搭建完成。

下一篇:企業實戰_08_MyCat 搭建Mysql 一主二從復制環境
https://gblfy.blog.csdn.net/article/details/118651265

總結

以上是生活随笔為你收集整理的企业实战_07_MyCat 搭建Mysql 一主一从复制环境的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。