企业实战_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. 主從復制搭建流程
| 第2步 | 在源(主機)數據庫中,創建主從復制的用戶 |
| 第3步 | 在新實例上恢復備份的數據庫 |
| 第4步 | 在新實例上配置復制鏈路 |
| 第5步 | 如果主機上的庫名和從機上的庫名不一致時,需要建立過濾鏈路 |
| 第6步 | 在新實例上啟動復制鏈路 |
2. 服務器分布
數據庫架構升級為垂直分庫,依次搭建mysql主從復制,一主一從、一主二從、一主三從環境
| node1 | 192.168.92.101 | MYSQL、mycat | imooc_db(主機物理) |
| node2 | 192.168.92.102 | MYSQL | order_db(從機物理) |
| node3 | 192.168.92.103 | MYSQL | product_db(主機物理) |
| node4 | 192.168.92.104 | MYSQL | customer_db(從機物理) |
二、 MySql 主機節點操作如下
聲明:提前啟動mysql
2.1. 創建數據庫
mysql -uroot -p -e"create database imooc_db"2.2. 初始化表結構及數據
- 這里為了演示,找了一個點上項目的表和數據,需要初始化一下
| 提取碼 | 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:/root2.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 #輸入密碼:1234564.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 -p5.2. 查看復制鏈路幫助
\h change master to5.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:同步開始的時間點(開始同步的文件名,開始復制日志的事務點),這個記錄在備份同步的文件中
異常解決方案(沒遇到則跳過):
Slave is not configured or failed to initialize properly. You must at least set --server-id
5.4. 查看鏈路
show slave status \G5.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 filter7.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 一主一从复制环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js json数据传递传递、json数据
- 下一篇: Linux centos7 安装 MyS