Mysql Row_Format 参数讲解

本文深入讲解MySQL中Row_Format参数的使用,包括静态表(static/fixed)与动态表(dynamic)的区别,以及修改Row_Format参数的方法。文章指出,在MYSAM数据库引擎下,可以通过ALTER TABLE语句来改变表的Row_Format,但InnoDB引擎不支持此特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是对于Row_Format参数的讲解:

在MYSQL中, 若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表[static/fixed ],即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。

那么实际开发中,这种表很少,大部分表的字段类型都是有很多种的,那么这种表就叫做:dynamic :动态表 ,优点是节省空间,缺点是读取的时间的开销

ROW_FORMAT 的值如下:

DEFAULT

FIXED

DYNAMIC

COMPRESSED

REDUNDANT

COMPACT

修改row_format的参数:

1
ALTER TABLE table_name ROW_FORMAT = DEFAULT
命令执行的结果:

fixed—>dynamic: 这会导致CHAR变成VARCHAR

dynamic—>fixed: 这会导致VARCHAR变成CHAR

注意:只有在MYSAM 的数据库引擎才支持这个属性:

mysql> alter table oem_idlib row_format = fixed;
ERROR 1478 (HY000): Table storage engine 'InnoDB' does not support the create option 'ROW_TYPE'
<think>嗯,用户想了解MySQL主从同步的详细过程和配置步骤。首先,我需要回忆一下相关知识,确保信息准确。根据用户提供的引用内容,主从同步主要涉及主库和从库的配置,以及同步状态的检查。 首先,主库需要开启二进制日志(binlog),这是主从同步的基础。用户可能不太清楚如何开启binlog,所以需要详细说明修改my.cnf文件的步骤,比如设置server-id、log-bin等参数。然后,创建用于复制的用户并授权,这一步引用了引用[2]中的change master命令中的用户信息,可能需要提到使用CREATE USER和GRANT命令。 接下来是主库状态记录的步骤,使用SHOW MASTER STATUS获取File和Position,这在配置从库时会用到。这部分在引用[2]里提到的master_log_file和master_log_pos需要对应起来,所以必须强调正确记录这两个值的重要性。 然后是配置从库的部分。同样需要修改my.cnf,设置server-id,可能还需要配置中继日志。接着使用CHANGE MASTER TO命令,这里引用[2]中的示例,需要替换主库的IP、用户名、密码、日志文件和位置。启动从库复制后,用SHOW SLAVE STATUS检查状态,如引用[1]中的Slave_IO_Running和Slave_SQL_Running是否为Yes,这是判断同步是否正常的关键。 另外,用户可能关心主从同步的原理,需要解释主库的binlog和从库的中继日志,以及IO线程和SQL线程的作用,这部分引用[3]中提到的主从架构,可以进一步展开说明。 可能还需要提到一些注意事项,比如主从服务器的server-id必须不同,网络连通性,以及同步延迟的问题。用户可能在实际操作中遇到问题,比如Slave_IO线程连接不上主库,这时候需要检查防火墙、用户权限是否正确。 最后,生成相关问题的时候,应该覆盖配置步骤、状态检查、同步原理和常见问题处理,这样用户可以有更全面的了解。确保每个步骤都引用正确的资料,比如配置步骤引用[2]和[3],状态检查引用[1],保持回答的准确性。</think>### MySQL主从同步详细过程及配置步骤 #### 一、主从同步核心原理 MySQL主从同步通过二进制日志(binlog)实现数据一致性[^3]: 1. **主库(Master)**:所有写操作记录到binlog中 2. **从库(Slave)**:通过I/O线程读取主库binlog并写入中继日志(relay log),再由SQL线程执行中继日志中的SQL语句 3. **关键组件**: - IO线程:负责从主库拉取binlog - SQL线程:执行中继日志中的SQL语句 #### 二、详细配置步骤(以MySQL 8.0为例) 1. **主库配置** 修改配置文件`my.cnf`: ```ini [mysqld] server-id=1 log-bin=mysql-bin binlog_format=ROW ``` 执行SQL命令: ```sql CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES; ``` 查看主库状态: ```sql SHOW MASTER STATUS; ``` 记录输出的`File`和`Position`值(如`mysql-bin.000003`和`843`)[^1][^2] 2. **从库配置** 修改配置文件`my.cnf`: ```ini [mysqld] server-id=2 relay-log=mysql-relay-bin ``` 执行同步配置: ```sql CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='replica_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=843; ``` 启动同步: ```sql START SLAVE; ``` 3. **验证同步状态** 执行检查命令: ```sql SHOW SLAVE STATUS\G ``` 确认以下参数: ```text Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0 ``` 若出现错误,可通过`Last_IO_Error`和`Last_SQL_Error`字段排查问题[^1] #### 三、同步过程示意图 $$ \begin{array}{ccc} \text{主库} & \xrightarrow{\text{binlog}} & \text{从库} \\ \text{写操作} & \leftarrow{\text{IO线程}} & \text{relay log} \\ & \downarrow{\text{SQL线程}} & \end{array} $$ #### 四、注意事项 1. 主从服务器时间必须同步 2. 主从`server-id`必须唯一 3. 建议主库设置`sync_binlog=1`保证数据安全 4. 网络带宽需满足数据同步需求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T-OPEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值