1. 程式人生 > >通過FEDERATED存儲引擎同步兩實例間的表數據

通過FEDERATED存儲引擎同步兩實例間的表數據

tran bsp smp temp def 文件 root con tab

需求情景:實例1中A庫中的三個視圖是實例2中的B庫所依賴的,B需要A庫中三個視圖的實時數據。

方案:通過FEDERATED來完成跨勢力的查詢
FEDERATED存儲引擎表只會創建表結構,不會存儲表數據,可以通過建表語句中的CONNECTION [=] ‘connect_string‘來指定訪問遠端數據的連接方式connect_string:
scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
[http://dev.mysql.com/doc/refman/5.7/en/federated-create-connection.html](url)
測試實施:
1.本地環境:

[root@test-01 ~]# uname -a
Linuxtest-01 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@test-01 ~]# mysql --version
mysql Ver 14.14 Distrib 5.6.17, for linux-glibc2.5 (x86_64) using EditLine wrapper


2.創建FEDERATED存儲引擎並啟動

mysql> show engines
-> ;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+


默認是支持的,在配置文件中加入federated選項,並重啟服務
3.實例1A上:

GRANT select ON test.t TO TEST@% IDENTIFIED BY test;


4.實例B上:

mysql> CREATE TABLE `test`.`fd_test_t` ( `id` int(11) DEFAULT NULL ) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION=mysql://root:root@host:6666/test/t; 
Query OK, 0 rows affected (0.00 sec)


到目前為止操作結束,現在在B上執行

mysql> select \* from fd_test_t;
+------+
| id |
+------+
| 1 |
+------+


就可以看到A表中test.t的數據了

---恢復內容結束---

---恢復內容開始---

通過FEDERATED存儲引擎同步兩實例間的表數據
需求情景:實例1中A庫中的三個視圖是實例2中的B庫所依賴的,B需要A庫中三個視圖的實時數據。
方案:通過FEDERATED來完成跨勢力的查詢
FEDERATED存儲引擎表只會創建表結構,不會存儲表數據,可以通過建表語句中的CONNECTION [=] ‘connect_string‘來指定訪問遠端數據的連接方式connect_string:
scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
[http://dev.mysql.com/doc/refman/5.7/en/federated-create-connection.html](url)
測試實施:
1.本地環境:

[root@test-01 ~]# uname -a
Linuxtest-01 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@test-01 ~]# mysql --version
mysql Ver 14.14 Distrib 5.6.17, for linux-glibc2.5 (x86_64) using EditLine wrapper


2.創建FEDERATED存儲引擎並啟動

mysql> show engines
-> ;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+


默認是支持的,在配置文件中加入federated選項,並重啟服務
3.實例1A上:

GRANT select ON test.t TO TEST@% IDENTIFIED BY test;


4.實例B上:

mysql> CREATE TABLE `test`.`fd_test_t` ( `id` int(11) DEFAULT NULL ) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION=mysql://root:root@host:6666/test/t; 
Query OK, 0 rows affected (0.00 sec)


到目前為止操作結束,現在在B上執行

mysql> select \* from fd_test_t;
+------+
| id |
+------+
| 1 |
+------+


就可以看到A表中test.t的數據了

---恢復內容結束---

通過FEDERATED存儲引擎同步兩實例間的表數據