MySQL运维实战
文章平均质量分 70
云掣YUNCHE
一家专注于云托管(MSP)服务的企业
展开
-
MySQL运维实战之ProxySQL(9.4)proxysql和后端MySQL自动切换
将主库和备库的hostgroup配置到mysql_replication_hostgroups表中后,proxysql会检测主备库的read_only状态。当检测到read_only从OFF变成ON时,会将writer_hostgroup中的主机添加的reader_hostgrup中。当检测到read_only从ON变成OFF时,会将主机从reader_hostgroup中移到writer_hostgroup中。后端MySQL实例的高可用,需要借助其它方式来实现,如MHA。更多技术信息请查看云掣官网。原创 2024-04-16 14:55:07 · 243 阅读 · 0 评论 -
MySQL运维实战之ProxySQL(9.3)使用ProxySQL实现读写分离
作者:俊达proxysql读写分离主要通过mysql_query_rules表中的规则来实现。原创 2024-04-11 15:45:38 · 775 阅读 · 0 评论 -
MySQL运维实战之ProxySQL(9.2)ProxySQL安装和配置
作者:俊达。原创 2024-03-29 15:36:13 · 1060 阅读 · 0 评论 -
MySQL运维实战之ProxySQL(9.1)ProxySQL介绍
在这个架构下,客户端并不需要知道连接的是proxysql,对客户端而言,他连接的是一台标准的mysql服务器。在proxysql后端,可以是一个使用mysql复制技术搭建的集群,或者是一个group replication集群。如果后端mysql集群发生了主备切换,proxysql可以自动感知到,客户端不用做特殊处理,就能实现数据访问高可用。proxysql本身支持mysql协议,对客户端而言,proxysql本身就是一台mysql。应用通过dns连接后端实例,当后端发生切换后,将dsn指向新的主库。原创 2024-03-25 16:06:16 · 431 阅读 · 0 评论 -
MySQL运维实战之备份和恢复(8.9)xtrabackup备份指定表
通过–tables,–tables-file,–databases,–databases-file等参数指定需要备份的表。通过这种方式备份的数据库,只能通过import tablespace的方式恢复。具体操作方法参考上一篇文章。如果实例设置了参数innodb_file_per_table,xtrabackup可以备份部分表。更多技术信息请查看云掣官网。原创 2024-03-19 10:26:14 · 393 阅读 · 0 评论 -
MySQL运维实战之备份和恢复(8.8)恢复单表
作者:俊达xtrabackup支持单表恢复。如果一个表使用了独立表空间(innodb_file_per_table=1),就可以单独恢复这个表。原创 2024-03-14 16:07:23 · 495 阅读 · 0 评论 -
MySQL运维实战之备份和恢复(8.7)将数据库恢复到指定时间点的另外一种方法
作者:俊达。原创 2024-03-12 14:52:44 · 813 阅读 · 0 评论 -
MySQL运维实战之备份和恢复(8.6)将数据库恢复到指定时间点
作者:俊达。原创 2024-03-08 15:31:41 · 676 阅读 · 0 评论 -
MySQL运维实战之备份和恢复(8.5)xtrabackup恢复增量备份
作者:俊达恢复增量备份时,需要先对基础全量备份进行恢复,然后再依次按增量备份的时间进行恢复。原创 2024-03-06 17:04:46 · 417 阅读 · 0 评论 -
MySQL运维实战之备份和恢复(8.4)xtrabackup恢复全量备份
作者:俊达恢复全量备份大致可以分成以下几步:解压备份文件、prepare备份文件、将数据copy到目标实例相关目录、启动数据库实例。原创 2024-03-01 14:36:45 · 1154 阅读 · 0 评论 -
MySQL运维实战之备份和恢复(8.3)xtrabackup增量备份
在做增量备份之前,需要先做一个全量备份。xtrabackup会基于innodb page的lsn号来判断是否需要备份一个page。如果page lsn大于上次备份的lsn号,就需要备份该page。增量备份时需要根据xtrabackup_checkpoints中的lsn。我们可以根据业务的具体情况,制定合适的备份策略。比如每周末进行一次全量备份,其他时间每天进行一次增量备份。需要注意的是,恢复增量备份时,需要增量备份前的全量备份,以及该增量备份和全量备份之间的所有增量备份。更多技术信息请查看云掣官网。原创 2024-02-29 16:47:31 · 626 阅读 · 0 评论 -
MySQL运维实战之备份和恢复(8.2)xtrabackup备份到云端(OSS)
xtrabackup工具中有一个xbcloud程序,可以将数据库直接备份到S3对象存储中,本地不落盘。这里介绍将数据库直接备份到OSS的一种方法。运行ossutil64 config,按提示输入endpoint,ak,sk信息。建议将xtrabackup备份的日志信息也上传到OSS。这样,我们就可以将数据库直接备份到云端,本地不落盘。4、使用ossutil工具将备份文件上传到OSS。将备份的输出重定向到步骤2创建的命名管道。我们使用ossutil工具上传备份文件。5、将备份日志信息也上传到OSS。原创 2024-02-28 15:17:15 · 588 阅读 · 0 评论 -
MySQL运维实战之备份和恢复(8.1)xtrabackup全量备份
作者:俊达xtrabackup是percona开源的mysql物理备份工具。xtrabackup 8.0支持mysql 8.0版本的备份和恢复。xtrabackup 2.4支持mysql 5.7及以下版本的备份和恢复。这里我们以xtrabackup 8.0为例讲解备份和恢复的具体操作方法。xtrabackup 2.4版本的使用上和8.0版本相差并不大。原创 2024-02-26 14:22:13 · 1016 阅读 · 0 评论 -
MySQL运维实战(7.2) MySQL复制server_id相关问题
作者:俊达。原创 2024-02-23 14:30:59 · 1296 阅读 · 0 评论 -
MySQL运维实战(7.1) 开启GTID复制
作者:俊达MySQL从5.6版本开始支持GTID复制。开启GTID之后,主库上执行的每一个事务都有一个全局唯一的ID。GTID由两部分组成:server_uuid和事务序列号。如果删除auto.cnf,重启实例时会重新生成。事务序列号在事务提交时按顺序生成。GTID事务复制到备库时,GTID保持不变。开启GTID有很多优点:1、MySQL会记录执行过的GTID事务,这样就可以避免重复执行同一个事务。原创 2024-02-21 14:49:46 · 505 阅读 · 0 评论 -
MySQL运维实战(7)建立复制
以下是建立复制的基本步骤,主要包括主库开启binlog的关键参数设置,创建主库复制账号以满足基本权限需求,备库参数配置和初始化的步骤。在备库上使用change master命令建立复制信息,这里指定从主库binlog.000001文件头部开始复制(master_log_pos没有指定时,从binlog文件头部复制)。备库开启binlog和log_slave_updates后,会将从主库上复制过来的事务也记录到binlog,在创建级连复制时,需要这么配置。上述参数中,log_bin不能动态修改。原创 2024-02-20 14:33:11 · 986 阅读 · 0 评论 -
MySQL运维实战(6)用户认证插件caching_sha2_password
作者:俊达。原创 2024-02-05 14:42:22 · 1039 阅读 · 0 评论 -
MySQL运维实战(5.6) 字符集设置对mysqldump的影响
使用mysqldump备份数据时,强烈建议指定字符集为UTF8MB4,以确保对各种数据类型的正确处理,避免在数据导出和导入过程中发生编码问题,从而保障数据的完整性和可靠性。更多技术信息请查看云掣官网t=yrgw。原创 2024-02-04 15:01:55 · 459 阅读 · 0 评论 -
MySQL运维实战(5.5) 数据导入导出时的字符集问题
MySQL允许一个表的多个字段使用不同的字符集。然而,在处理具有不同字符集的多个字段时,必须特别注意数据导入和导出的过程。为避免乱码问题,有两种主要的解决方案:一是在导出数据时将所有字段数据转换为相同的字符集,确保一致性;二是在导入时使用binary字符集,以保持数据的原始形式。这样,可以有效地处理多字符集表格的数据导入导出,确保数据的准确性和完整性。更多技术信息请查看云掣官网t=yrgw。原创 2024-02-02 14:38:44 · 786 阅读 · 0 评论 -
MySQL运维实战(5.4) MySQL元数据乱码
在数据库设计和表创建过程中,确保正确设置字符集相关参数是至关重要的。如果在建表时字符集相关参数设置不正确,可能导致表的元数据出现乱码,包括表名、列名、表和列的注释,以及存储过程中的字符。为了维护数据的完整性和可读性,应该确保在整个数据库生命周期中都使用一致的字符集设置。在处理不同字符集的情况下,谨慎选择并正确配置字符集相关参数,以防止出现乱码问题。及时检查和修复字符集不一致的情况,是确保数据库正常运作的关键步骤。更多技术信息请查看云掣官网t=yrgw。原创 2024-02-01 14:43:22 · 645 阅读 · 0 评论 -
MySQL运维实战(5.3) MySQL数据乱码的一些情况
当客户端字符编码方式和MySQL参数character_set_client、character_set_results设置不匹配时,容易产生乱码。有的时候,数据库存储的数据没有问题,但是客户端编码设置不对,导致看上去有乱码,这种情况下只需要将客户端编码设置正确,就可以了。有的时候,存储到数据库的数据就不对了,甚至原来的数据无法编码,会被“?”等替换字符替换,这时可能就无法得到原先的数据了。更多技术信息请查看云掣官网t=yrgw。原创 2024-01-31 14:44:33 · 1160 阅读 · 0 评论 -
MySQL运维实战(5.2) charset基本概念
作者:俊达。原创 2024-01-30 14:30:36 · 472 阅读 · 0 评论 -
MySQL运维实战(5.1) 字符和编码的基本概念
作者:俊达。原创 2024-01-29 14:00:51 · 585 阅读 · 0 评论 -
MySQL运维实战(4.9) SQL_MODE之NO_UNSIGNED_SUBTRACTION
在MySQL中,unsigned关键字用于声明一个字段只包含非负数(零和正整数),而不包含负数。当使用unsigned字段进行运算时,如果结果为负数,MySQL默认会产生错误,因为无法表示负数。NO_UNSIGNED_SUBTRACTION是SQL是一个SQL MODE,它会修改MySQL的行为,允许unsigned类型的字段参与减法运算,并允许结果为负数,而不会报错。在SQL_MODE中加入NO_UNSIGNED_SUBTRACTION后,运算结果可以为负数。更多技术信息请查看云掣官网。原创 2024-01-26 15:04:11 · 645 阅读 · 0 评论 -
MySQL运维实战(4.8) SQL_MODE之NO_ENGINE_SUBSTITUTION
总之,我们建议SQL_MODE设置NO_ENGINE_SUBSTITUTION,可以在建表时更严格地检查存储引擎的合法性,尽早发现问题。避免表使用了不符合要求的存储引擎,有助于提高数据库的可靠性。设置NO_ENGINE_SUBSTITUTION后,如果指定的存储引擎不存在或不可用,MySQL将产生错误,这有助于在建表时更早地发现问题,提高数据库的稳定性。如果设置了NO_ENGINE_SUBSTITUTION,建表时指定的存储引擎不存在,则会报错,无法创建表。更多技术信息请查看云掣官网。原创 2024-01-26 14:34:19 · 944 阅读 · 0 评论 -
MySQL运维实战(4.7) SQL_MODE之ANSI_QUOTES
在 MySQL 中,标识符是指数据库、表名、列名等的名称。然而,MySQL 提供了一个 SQL 模式——ANSI_QUOTES ,它可以改变标识符引号的行为。而设置ANSI_QUOTES后,双引号 (") 内的内容不再是字符串,而是MySQL的标识符(如表名、字段名)。这样做的好处是,可以更容易地将 SQL 语句与其他数据库系统的语法进行兼容,因为在 ANSI SQL 中,双引号是用于引用标识符的常用方法。根据实际需要,可以选择使用反引号或设置 ANSI_QUOTES 模式,以便更好地处理标识符的引用。原创 2024-01-23 14:55:56 · 647 阅读 · 0 评论 -
MySQL运维实战(4.6) SQL_MODE之NO_BACKSLASH_ESCAPES
总之,NO_BACKSLASH_ESCAPES模式决定了反斜杠在MySQL中的转义行为。设置了该模式后,反斜杠将被视为普通字符,而不设置该模式则反斜杠用来转义后一个字符。通过设置NO_BACKSLASH_ESCAPES,可以避免过度使用反斜杠转义符,使操作更加简洁和易读。在MySQL中,默认情况下,反斜杠(\)被用作转义字符,转义反斜杠(\)后一个字符;当设置NO_BACKSLASH_ESCAPES后,反斜杠(\)将不作为转义字符,而被视为普通字符。更多技术信息请查看云掣官网。原创 2024-01-22 14:33:30 · 703 阅读 · 0 评论 -
MySQL运维实战(4.5) SQL_MODE之NO_ZERO_DATE和NO_ZERO_IN_DATE
建议同时设置NO_ZERO_IN_DATE,NO_ZERO_DATE和STRICT_TRANS_TABLES,可以确保更加严格的日期数据规范,防止不合法或者异常的日期数据写入数据库,这对于确保数据库中数据的一致性和准确性非常重要。更多技术信息请查看云掣官网t=yrgw。原创 2024-01-18 15:07:12 · 930 阅读 · 0 评论 -
MySQL运维实战(4.4) SQL_MODE之STRICT_TRANS_TABLES和STRICT_ALL_TABLES
对于组合型SQL,对于非事物型存储引擎,如MyISAM存储引擎,一个SQL中部分数据合法,部分数据不合法,则可能会在表中写入部分数据,但截断或修改为合法值,而不会导致整个操作失败。例如,在数据写入时,如果数据不符合字段定义(字符串超出长度、数值类型数据超出范围、违反not null约束等),SQL会报错。与STRICT_ALL_TABLES不同,设置STRICT_TRANS_TABLES模式仅在事务表上执行更严格的检查,包括对插入和更新的数据类型和值的验证,而不影响往非事务型引擎中写入非法数据。原创 2024-01-17 14:12:05 · 1024 阅读 · 0 评论 -
MySQL运维实战(4.3) SQL_MODE之ONLY_FULL_GROUP_BY
我们的建议是设置ONLY_FULL_GROUP_BY,这有助于确保查询的严格性和一致性,符合 SQL 标准。此外,在生产环境中更改SQL_MODE 可能会影响现有的查询和应用程序,因此在做任何更改之前需要先进行兼容性测试。更多技术信息请查看云掣官网t=yrgw。原创 2024-01-16 14:35:11 · 673 阅读 · 0 评论 -
MySQL运维实战(4.2) 关于SQL_MODE
作者:俊达早期,MySQL对一些不符合SQL标准的SQL语句和数据的容忍度比较高,可能会自主地执行或转换一些语句。但是,随着MySQL 5.7的推出,对默认的SQL模式进行了修改,更加强调SQL的合规性,这种变化是为了提高数据一致性和统一SQL标准。系统在升级MySQL版本时,特别是从低版本升级或迁移到5.7及更高版本时,为了规避新的SQL模式对原有的代码和数据产生影响导致的错误或不一致的行为,需要进行全面的测试,以确保系统顺利升级并保持稳定性。原创 2024-01-15 14:39:22 · 490 阅读 · 0 评论 -
MySQL运维实战(4.1) MySQL表存储引擎
作者:俊达。原创 2024-01-15 14:04:18 · 1065 阅读 · 0 评论 -
MySQL运维实战(3.3) 管理数据库(database)
作者:俊达。原创 2024-01-11 14:43:00 · 1223 阅读 · 0 评论 -
MySQL运维实战(3.2) 常见数据库连接失败问题排查
作者:俊达我们经常会遇到一些数据库连接失败或访问报错的问题。收集并分析具体的报错信息,可以帮助我们迅速定位问题。原创 2024-01-09 15:59:58 · 790 阅读 · 0 评论 -
MySQL运维实战(3.1) MySQL官方客户端使用介绍
作者:俊达。原创 2024-01-08 14:36:03 · 1314 阅读 · 0 评论 -
MySQL运维实战(2.4) SSL认证在MySQL中的应用
作者:俊达。原创 2024-01-05 14:11:53 · 1318 阅读 · 0 评论 -
MySQL运维实战(2.3)MySQL的权限体系
作者:俊达。原创 2024-01-04 13:52:07 · 1081 阅读 · 0 评论 -
MySQL运维实战(2.2)忘记密码如何处理
作者:俊达。原创 2024-01-03 14:27:30 · 745 阅读 · 0 评论 -
MySQL运维实战(2.1) 登录失败次数太多导致主机被锁住的问题处理
当一个主机连续登录mysql失败的次数超过max_connect_errors后,将无法再次登录数据库。这些错误次数会按照主机的维度记录在performance_schema.host_cache表中。然而,如果在一个主机达到max_connect_errors之前,出现了一次成功的登录,系统会将该主机的错误计数重置为0。为了重置错误次数,我们可以使用mysqladmin flush-hosts命令。原创 2024-01-02 11:35:58 · 801 阅读 · 0 评论 -
MySQL运维实战(2)MySQL用户和权限管理
作者:俊达。原创 2023-12-26 17:25:14 · 1051 阅读 · 0 评论