MySQL Fabric 环境部署

  • A+
所属分类:数据库技术

一步一步的构建fabric的部署环境,时间仓促,大致把命令list做了罗列,很多地方都有很多可以剖析的地方,今天就不多说了,后续会补上…

构建环境

实例准备

我在本地机器搭建了7个实例分别为 :3306实例作为back store database。省下三组主备以后用来作为sharding group的实例,M代表主库,S代表slave备库。对应的端口如下

  1. 3306
  2. 3310 [M] <---->  3311 [S]
  3. 3312 [M] <---->  3313 [S]
  4. 3314 [M] <---->  3315 [S]

看一下如下命令:

  1. ps -ef | grep mysqld | grep mysqld_safe

输出:

  1. 74  6488  5534   0  9:16下午 ttys000    0:00.86 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql3306/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql3306/log/alert.log --pid-file=/data/mysql3306/run/mysqld.pid --socket=/data/mysql3306/run/mysql.sock --port=3306
  2. 74  7464  6509   0  9:17下午 ttys000    0:00.78 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql3310/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql3310/log/alert.log --pid-file=/data/mysql3310/run/mysqld.pid --socket=/data/mysql3310/run/mysql.sock --port=3310
  3. 74  8424  7465   0  9:17下午 ttys000    0:00.76 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql3311/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql3311/log/alert.log --pid-file=/data/mysql3311/run/mysqld.pid --socket=/data/mysql3311/run/mysql.sock --port=3311
  4. 74  9380  8425   0  9:17下午 ttys000    0:00.81 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql3312/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql3312/log/alert.log --pid-file=/data/mysql3312/run/mysqld.pid --socket=/data/mysql3312/run/mysql.sock --port=3312
  5. 74 10336  9381   0  9:18下午 ttys000    0:00.80 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql3313/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql3313/log/alert.log --pid-file=/data/mysql3313/run/mysqld.pid --socket=/data/mysql3313/run/mysql.sock --port=3313
  6. 74 11292 10337   0  9:18下午 ttys000    0:00.84 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql3314/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql3314/log/alert.log --pid-file=/data/mysql3314/run/mysqld.pid --socket=/data/mysql3314/run/mysql.sock --port=3314
  7. 74 12248 11293   0  9:18下午 ttys000    0:00.80 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql3315/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql3315/log/alert.log --pid-file=/data/mysql3315/run/mysqld.pid --socket=/data/mysql3315/run/mysql.sock --port=3315

复制结构

  1. ruiayLinSunnydeMacBook-Pro-2:gtidtest root# mysqlrplshow --master=root:root@localhost:3310 --discover-slaves-login=root:root -vv
  2. # master on localhost: ... connected.
  3. # Finding slaves for master: localhost:3310
  4. # Replication Topology Graph
  5. localhost:3310 (MASTER)
  6.    |
  7.    +--- localhost:3311 [IO: Yes, SQL: Yes] - (SLAVE)
  8. ruiayLinSunnydeMacBook-Pro-2:gtidtest root# mysqlrplshow --master=root:root@localhost:3312 --discover-slaves-login=root:root -vv
  9.  # master on localhost: ... connected.
  10. # Finding slaves for master: localhost:3312
  11. # Replication Topology Graph
  12. localhost:3312 (MASTER)
  13.    |
  14.    +--- localhost:3313 [IO: Yes, SQL: Yes] - (SLAVE)
  15. ruiayLinSunnydeMacBook-Pro-2:gtidtest root# mysqlrplshow --master=root:root@localhost:3314 --discover-slaves-login=root:root -vv
  16. # master on localhost: ... connected.
  17. # Finding slaves for master: localhost:3314
  18. # Replication Topology Graph
  19. localhost:3314 (MASTER)
  20.    |
  21.    +--- localhost:3315 [IO: Yes, SQL: Yes] - (SLAVE)

创建用户,配置fabric对应user权限

  1. CREATE USER 'fabric'@'localhost' IDENTIFIED BY 'secret';
  2. GRANT ALL ON fabric.* TO 'fabric'@'localhost';
  3. GRANT ALL ON fabric.* TO 'fabric'@'127.0.0.1';
  4. SET PASSWORD FOR 'fabric'@'localhost' = PASSWORD('secret');
  5. SET PASSWORD FOR 'fabric'@'127.0.0.1' = PASSWORD('secret');

配置fabric

  1. [DEFAULT]
  2. prefix =
  3. sysconfdir = /etc
  4. logdir = /var/log
  5. [storage]
  6. address = localhost:3306
  7. user = fabric
  8. password =secret
  9. database = fabric
  10. unix_socket=/data/mysql3306/run/mysql.sock
  11. auth_plugin = mysql_native_password
  12. connection_timeout = 6
  13. connection_attempts = 6
  14. connection_delay = 1
  15. [servers]
  16. user = fabric
  17. password =secret
  18. [protocol.xmlrpc]
  19. address = localhost:32274
  20. threads = 5
  21. user = admin
  22. password =admin
  23. disable_authentication = no
  24. realm = MySQL Fabric
  25. ssl_ca =
  26. ssl_cert =
  27. ssl_key =
  28. [executor]
  29. executors = 5
  30. [logging]
  31. level = INFO
  32. url = file:///var/log/fabric.log
  33. [sharding]
  34. mysqldump_program =/usr/local/mysql/bin/mysqldump
  35. mysqlclient_program = /usr/local/mysql/bin/mysql
  36. [statistics]
  37. prune_time = 3600
  38. [failure_tracking]
  39. notifications = 300
  40. notification_clients = 50
  41. notification_interval = 60
  42. failover_interval = 0
  43. detections = 3
  44. detection_interval = 6
  45. detection_timeout = 1
  46. prune_time = 3600
  47. [connector]
  48. ttl = 1
  49. [client]
  50. password =

初始化fabric环境

运行 mysqlfabric manage setup –param=storage.user=fabric –param=storage.password=secret 看到如下输出

  1. ruiayLinSunnydeMacBook-Pro-2:mysql root# mysqlfabric manage setup --param=storage.user=fabric --param=storage.password=secret
  2. [INFO] 1402714453.490616 - MainThread - Initializing persister: user (fabric), server (localhost:3306), database (fabric).
  3. [INFO] 1402714456.262460 - MainThread - Initial password for admin/xmlrpc set
  4. Password set for admin/xmlrpc from configuration file.
  5. [INFO] 1402714456.280574 - MainThread - Password set for admin/xmlrpc from configuration file.

初始化完毕后可以登录store db ,也就是mysql3306 实例,use fabric ; show tables ; 可以看到如下表:

  1. root@fabric 10:54:41>show tables ;
  2. +-------------------+
  3. | Tables_in_fabric  |
  4. +-------------------+
  5. | checkpoints       |
  6. | error_log         |
  7. | group_replication |
  8. | group_view        |
  9. | groups            |
  10. | log               |
  11. | permissions       |
  12. | proc_view         |
  13. | role_permissions  |
  14. | roles             |
  15. | servers           |
  16. | shard_maps        |
  17. | shard_ranges      |
  18. | shard_tables      |
  19. | shards            |
  20. | user_roles        |
  21. | users             |
  22. +-------------------+
  23. 17 rows in set (0.00 sec)

至此 fabric 环境已经准备好了。 可以启动fabric后台进程了。

启动 fabric

终端执行:mysqlfabric manage start ,当然还有很多参数可以添加,比如 Deamon 选项和指定日志文件选项

  1. ruiayLinSunnydeMacBook-Pro-2:mysql root#  mysqlfabric manage start
  2. [INFO] 1402714611.474464 - MainThread - Initializing persister: user (fabric), server (localhost:3306), database (fabric).
  3. [INFO] 1402714611.478876 - MainThread - Loading Services.
  4. [INFO] 1402714611.495904 - MainThread - Fabric node starting.
  5. [INFO] 1402714611.497266 - MainThread - Starting Executor.
  6. [INFO] 1402714611.497345 - MainThread - Setting 5 executor(s).
  7. [INFO] 1402714611.497697 - Executor-0 - Started.
  8. [INFO] 1402714611.498002 - Executor-1 - Started.
  9. [INFO] 1402714611.498457 - Executor-2 - Started.
  10. [INFO] 1402714611.498768 - Executor-3 - Started.
  11. [INFO] 1402714611.499371 - Executor-4 - Started.

结束

环境已经配置完成, 接下来就可以配置 group 和 shards。