Mysql怎么增加节点

59次阅读
没有评论

共计 5605 个字符,预计需要花费 15 分钟才能阅读完成。

本篇内容介绍了“Mysql 怎么增加节点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

我们知道,一组优秀的集群环境有一个很必要的特性,那就是可拓展性。Group Replication 的拓展性怎么样呢?我们设定如下几个场景,来看看 Group Replicaiton 是否方便拓展:
总执行的事务量较少,而且所有的 binlog 都保留完整。
总事务量较少,binlog 只保留部分。
总事务量很大,binlog 保留完整。
总事务量很大,binlog 只保留部分。
我们在对以上几种场景进行分析
总事务量较少,binlog 保留完整。那么我们可以直接应用所有 binlog,来创建一个和现有环境相同的实例。
总事务量较少,binlog 保留部分。此场景中 binlog 丢失,无法应用所有 binlog 来创建一个和现有环境相同的实例。那么我们要得到一个和现有环境相同的实例,只有复制一个现有环境中的实例,然后再将这个实例添加到集群。复制的方法我能想到的有如下几种:
mysqldump
xtrabackup
总事务量较多,binlog 保留完整。我们可以和第一种环境一样,应用所有 binlog 来创建新实例。但是事务较多应用 binlog 需要非常多的时间。为了提高效率,我们还是采用复制实例的方式来创建新实例。
总事务较多,binlog 只保留部分。这个场景和第二个场景差不多,我们也只能采用复制实例的方式来创建新的实例。

所以,除了第一个场景外,其它的最好还是备份前的的数据后,恢复到新的 server 上再开启同步,下面就做一下这个试验:

机器名   IP  角色
qht131  172.17.61.131  primary 

qht132  172.17.61.132  secdnode1
qht133  172.17.61.133  secdnode2
qht134  172.17.61.134  secdnode3

1. 检查当前 mgr 的状态:

mysql   select * from performance_schema.replication_group_members ;

±————————–±————————————-±————±————±————-+

| CHANNEL_NAME  | MEMBER_ID  | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |

±————————–±————————————-±————±————±————-+

| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e89b | qht131  |  3306 | ONLINE  |

| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e90b | qht132  |  3306 | ONLINE  |

| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e91b | qht133  |  3306 | ONLINE  |

±————————–±————————————-±————±————±————-+
1
建立一个表做测试数据:

mysql drop table  test_mgr;

Query OK, 0 rows affected (0.05 sec)

mysql create table  test_mgr (c1 int(11) primary key);

Query OK, 0 rows affected (0.07 sec)

mysql insert into test_mgr values(1);

Query OK, 1 row affected (0.01 sec)
1
将全库备份一下复制到目标新库:
[root@qht131 backup]# mysqldump -uroot -p –all-databases –triggers –routines –events –master-data=2 dbdump.db
[root@qht131 backup]# scp dbdump.db 172.17.61.134:/u01/backup
1
备份之后再对数据库做一些操作:

mysql insert into test_mgr values(2);

Query OK, 1 row affected (0.00 sec)

mysql   insert into test_mgr values(3);

Query OK, 1 row affected (0.03 sec)

mysql select * from  test_mgr;

±—+

| c1 |

±—+

|  1 |

|  2 |

|  3 |

±—+
1

2.qht134 安装好数据库,将备份恢复过来:
[root@qht134 backup]# mysql -uroot -p dbdump.db
3. 配置 my.cnf,配置文件注意 server_id 以及 loose-group_replication_local_address 和 loose-group_replication_local_address。

[root@qht134 backup]# cat /etc/my.cnf

[client]

port = 3306

socket = /u01/mysql/mysql.sock

[mysql]

no-auto-rehash

[mysqld]

socket = /u01/mysql/mysql.sock

character_set_server= utf8

init_connect=‘SET NAMES utf8’

basedir= /usr/local/mysql

datadir= /u01/mysql

socket = /u01/mysql/mysql.sock

log-error= /u01/log/mysql/mysql_3306.err

pid-file= /u01/mysql/mysqld.pid

lower_case_table_names = 1

sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

secure-file-priv = /u01/backup

server-id=10004

log_bin = /u01/mysql/mysql_bin

#skip-grant-tables

#innodb_flush_log_at_trx_commit=1

#sync_binlog=1

#expire_logs_days=10

#max_binlog_size=1073741824

#autocommit=off

#long_query_time=15

#slow_query_log=on

log_slave_updates = ON

relay_log_info_repository = TABLE

master_info_repository = TABLE

transaction_write_set_extraction = XXHASH64

binlog_format = ROW

binlog_checksum = NONE

enforce_gtid_consistency = ON

gtid_mode = ON

loose-group_replication_group_name= aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

loose-group_replication_start_on_boot=off

loose-group_replication_local_address= 172.17.61.134:33060

loose-group_replication_group_seeds= 172.17.61.131:33060,172.17.61.132:33060,172.17.61.133:33060,172.17.61.134:33060

loose-group_replication_bootstrap_group= off
1
  重启数据库
1

[root@qht134 mysql]# service mysql start

Starting MySQL…  [  OK ] 

1
4. 修改原有节点的 memeber 信息:
在 qht131,qht132,qht133 以分别执行:

mysql   set global group_replication_group_seeds=‘172.17.61.131:33060,172.17.61.132:33060,172.17.61.133:33060,172.17.61.134:33060’;

Query OK, 0 rows affected (0.02 sec)
1
5. 在新节点上建立复制用户

mysql set sql_log_bin=0;

Query OK, 0 rows affected (0.00 sec)

mysql   create user mgruser@’%’identified by‘mgruser’;

ERROR 1396 (HY000): Operation CREATE USER failed for‘mgruser’@’%
1

mysql set sql_log_bin=1;

Query OK, 0 rows affected (0.00 sec)
1
对了,复制用户的信息都已经从 mysqldump 中恢复了过来,所以就不用重新建立了。
如果新节点不是备份恢复过来的,则需要重新建立复制用户。
6. 安装复制插件以及启动新的复制节点
  mysql install plugin group_replication soname‘group_replication.so’;  #先 show plugins; 检查一下有没有安装好复制插件,如已安装好的话则跳过此步骤

mysql change master to

  – master_user=‘mgruser’,

  – master_password=‘mgruser’

  – for channel‘group_replication_recovery’;

Query OK, 0 rows affected, 2 warnings (0.04 sec)

mysql start group_replication;

Query OK, 0 rows affected (3.40 sec)
1
7. 查询点节状态:

mysql select * from performance_schema.replication_group_members ;

±————————–±————————————-±————±————±————-+

| CHANNEL_NAME  | MEMBER_ID  | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |

±————————–±————————————-±————±————±————-+

| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e89b | qht131  |  3306 | ONLINE  |

| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e89c | qht134  |  3306 | ONLINE  |

| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e90b | qht132  |  3306 | ONLINE  |

| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e91b | qht133  |  3306 | ONLINE  |

±————————–±————————————-±————±————±————-+

4 rows in set (0.04 sec)
1
发现 qht134 已成功加入了复制群组。

mysql select * from test_mgr;

±—+

| c1 |

±—+

|  1 |

|  2 |

|  3 |

±—+

3 rows in set (0.00 sec)
1
数据也同步到了最新的状态。
8. 后续操作
为了下次 qht131,qht132,qht133 重启后的 gr 配置仍然有效,需要修改 my.cnf 的配置:
oose-group_replication_group_seeds= 172.17.61.131:33060,172.17.61.132:33060,172.17.61.133:33060,172.17.61.134:33060
1
这样保证在重启数据库后,GR 的配置是最新的。

“Mysql 怎么增加节点”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计5605字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)