Skip to content

mysql-shell 管理组复制

安装

sudo apt-get install mysql-shell

创建超级用户

create user administrator@'%' identified with 'caching_sha2_password'  by 'password';
grant all PRIVILEGES on *.* to administrator@'%' WITH GRANT OPTION;
flush privileges;
show grants for administrator@'%';

创建集群

创建集群,第一个节点
mysqlsh -uadministrator -ppassword -h 10.10.2.11 

shell.options['dba.restartWaitTimeout']=300;
var cluster=dba.createCluster('YOURMGR',{disableClone:false});
加入节点 1 
dba.getCluster().addInstance('administrator:cluster_password@10.10.2.12:3306',{recoveryMethod:'clone'})
加入节点 2
dba.getCluster().addInstance('administrator:cluster_password@10.10.2.12:3306',{recoveryMethod:'clone'})

使用 mysqlsh 创建集群会自动创建组复制的相关用户,并不是使用的这个administrator 账号。

查看状态

dba.getCluster().status();
mysql router 
# 创建配置文件
mysqlrouter --bootstrap mysql_user@host:port  -d /etc/mysql/conf/router --name myrouter --force --user=mysql
# 启动router
cd /etc/mysql/conf/router && sh start.sh
https://github.com/rluisr/mysqlrouter_exporter

注意事项apparmor aa-teardown

# 验证
mysql -h xxx -P 6446 -pmysql_4U

mysql -h xxx -P 6447 -pmysql_4U
#mysqlsh 配置验证,修复
dba.checkInstanceConfiguration();
dba.configureInstance();

扩容节点

查看状态

dba.getCluster().status();

加入前验证集群

dba.checkInstanceConfiguration('user@10.10.2.13:3306');

加入前配置集群

dba.configureInstance('user@10.10.2.13:3306');

加入集群

dba.getCluster().addInstance('user@10.10.2.13:3306');

重新加入集群

cluster.rejoinInstance() 

缩容

cluster.removeInstance("root@instanceWithOldUUID:3306", {force: true})
cluster.rescan()

指定主节点

cluster.setPrimaryInstance()

重启集群

当所有集群中的节点都处于关闭状态时

dba.rebootClusterFromCompleteOutage();

API

https://dev.mysql.com/doc/dev/mysqlsh-api-python/8.0/