ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

《MySQL DBA 工作笔记》简记

2021-08-01 22:00:38  阅读:181  来源: 互联网

标签:DBA MySQL js 简记 master mysql 3310 节点


MySQL DBA 工作笔记

文章目录

1 DDL

1.online DDL   3种方式:
copy,会创建临时表,并记录增量。
inplace,不创建临时表,对当前的数据文件进行修改
defaul,根据参数old_alter_table判断,默认是OFF,表示采用inplace

2.pt-osc  常用

2 GTID

select * from gtid_executed;  <-- set @@global.gtid_purged='gtid事务段';
show variables like '%purge%';
`如果发生异常:对比主库事务号,找到临界点,从库进行purged,重建复制。

3 主从数据同步

pt-table-checksum  +  pt-table-sync

4 MHA

(1)、 Manager工具:
– masterha_check_ssh : 检查MHA的SSH配置。
– masterha_check_repl : 检查MySQL复制。
– masterha_manager : 启动MHA。
– masterha_check_status : 检测当前MHA运行状态。
– masterha_master_monitor : 监测master是否宕机。
– masterha_master_switch : 控制故障转移(自动或手动)。
– masterha_conf_host : 添加或删除配置的server信息。
(2)、 Node工具(这些工具通常由MHAManager的脚本触发,无需人手操作)。
– save_binary_logs : 保存和复制master的二进制日志。
– apply_diff_relay_logs : 识别差异的中继日志事件并应用于其它slave。
– filter_mysqlbinlog : 去除不必要的ROLLBACK事件(MHA已不再使用这个工具)。
– purge_relay_logs : 清除中继日志(不会阻塞SQL线程)。
(3)、自定义扩展:
-secondary_check_script:通过多条网络路由检测master的可用性;
-master_ip_failover_script:更新application使用的masterip;#重点
-shutdown_script:强制关闭master节点;
-report_script:发送报告;
-init_conf_load_script:加载初始配置参数;
-master_ip_online_change-script:更新master节点ip地址;#重点
`逻辑:
masterha_manager:masterMonitor (包含心跳检测 wait_until_master_is_dead) + MasterFailover

masterha_master_switch会调用MasterFailover和masterRotat:查看最新的slave,补齐日志(通过mysqlbinlog基于时间戳来处理)

备注:
1.Favilover 在8小时内再次切换,会报错。
2.主从复制的检查阈值,基于second_behind_master 默认30s.# 30秒以上的主从延迟是无法启动MHA的。
3.健康检查,ping_type:ping insert,ping select,ping connect # 建议设置为ping insert.(在表插入一条记录,来验证MHA的可用性)

5 InnoDB Cluster

#share nothing 的特点。强一致性+组播

MySQL Shell,MySQL Router,MGR

>Python最低要求是2.7
>MySQL5.7.17,推荐8.0.22以上

1.
测试环境:
使用MySQL Shell的命令mysqlsh开始部署,创建一个端口为3310的实例

mysql-js> dba.deploySandboxInstance(3310)
接着创建另外两个节点 3320,3330
dba.deploySandboxInstance(3320)
dba.deploySandboxInstance(3330)

我们切换到3310的MySQL实例,准备开始创建Cluster
mysql-js>  \connect root@localhost:3310

`至少需要3个节点,最多9个

mysql-js>  var cluster = dba.createCluster('testCluster')
接着把另外两个节点加入进来,先加入端口为3320的节点
mysql-js> cluster.addInstance('root@localhost:3320')
加入端口为3330的节点,日志和节点2相似。
mysql-js> cluster.addInstance('root@localhost:3330')

这个时候Cluster就创建好了。

2.
配置一下MySQL Router,创建个软链接,保证能够正常调用。

# ln -s /home/innodb_cluster/mysql-router-2.1.3-linux-glibc2.12-x86-64bit/bin/mysqlrouter   /usr/bin/mysqlroute
# which mysqlroute
/usr/bin/mysqlroute
配置MySQL Router的启动节点为端口3310的实例
# mysqlrouter --bootstrap root@localhost:3310 --user=mysql

这个时候还是要输入密码,成功之后,这个绑定就打通了。
可以从上面的日志看出来,分配的读写端口是6446,只读端口是6447,还有x协议连接的端口为64460,64470
启动MySQL Router
# mysqlrouter &  #也可以 -c 自定义启动加载的配置文件

如果对MySQL Router还有些疑问,可以看看安装目录下,会生成下面的配置文件,我们就看里面的.conf文件,里面的一部分内容如下:
[routing:testCluster_default_rw]
bind_address=0.0.0.0
bind_port=6446
destinations=metadata-cache://testCluster/default?role=PRIMARY
mode=read-write
protocol=classic

我们尝试使用6446来连接登录,这个时候就通过MySQL Shell开启了连接入口,MySQL Router做了转接,连接到了里面的读写节点3310

# mysqlsh --uri root@localhost:6446

mysql-js> \sql
Switching to SQL mode... Commands end with ;
mysql-sql> select @@port;
+--------+
| @@port |
+--------+
|   3310 |
+--------+

如果切换为脚本模式查看实例的状态,可以使用里面定义的API来做,输出都是JSON串。
mysql-js> dba.configureLocalInstance('root@127.0.0.1:3310')
如果查看Cluster的信息,可以看到下面的读写节点,只读节点的状态信息
mysql-js> dba.getCluster()
`得到Cluster的信息:
mysql-js> cluster.status()

3.验证
模拟一个节点出现问题,可以使用killSandboxInstance方法。
mysql-js> dba.killSandboxInstance(3310)

节点被清理了,没有任何进程存在。
# ps -ef|grep mysql|grep 3310
使用6446的端口来统一连接,这个时候就切换到了端口3320的MySQL服务
# mysqlsh --uri root@localhost:6446
mysql-js> \sql
Switching to SQL mode... Commands end with ;
mysql-sql> select @@port;
+--------+
| @@port |
+--------+
|   3320 |
+--------+

所以切换的部分没有问题,我们再次把“迷失”的节点启动起来。
# mysqlsh --uri root@localhost:6446
mysql-js> dba.startSandboxInstance(3310)

这个时候再次查看Cluster的状态,3320就是主了,3310就是只读节点了。
mysql-js> dba.getCluster()

`把节点2纳入到Cluster中

mysql-js> cluster.rejoinInstance('root@localhost:3310')

6 MyCAT

例如 4个物理节点,每个节点4个逻辑库(点),共16个sharding分片

对应schema.xml 16个datanode dn*    16个database 库名*

`DDL:Mycat端不支持,需要到每个节点单独执行

## 6 MyCAT

```shell
例如 4个物理节点,每个节点4个逻辑库(点),共16个sharding分片

对应schema.xml 16个datanode dn*    16个database 库名*

`DDL:Mycat端不支持,需要到每个节点单独执行

—From 杨建荣著

标签:DBA,MySQL,js,简记,master,mysql,3310,节点
来源: https://blog.csdn.net/baidu_34007305/article/details/119304278

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有