mysql纵向拓展和横向拓展

67 阅读3分钟

Mysql分库分表

1.mysql分库分表通常采用纵向拓展和横向拓展的方式。

  • 纵向拓展:MySQL纵向扩展是指通过增加硬件资源,例如添加CPU、增加内存、加快存储介质的转速等,提高单台数据库服务器的性能。与水平扩展(增加多台服务器来实现负载均衡)相比,纵向扩展并不涉及多台服务器的管理和配置,因此在一些情况下更加的方便和高效。

  • 横向拓展:横向拓展,就是将插入/修改数据时存储到某个数据库中,读取数据时从另一个数据数据库中读取,具体如何分配数据到数据库有几种简单的实现方式:

    1. 基于地区IP:做数据库分片

    2. 基于具体时段:做数据库分片(有很大缺陷,因为大多数程序都有请求高峰期和请求低谷期)

    3. 基于范围的分片:根据值的范围拆分数据库行,然后数据库设计人员将分片键分配给相应的范围。例如,可以根据客户名称的第一个字母对数据进行分区

    4. 哈希分片:通过使用哈希函数将分片键分配给数据库的每一行。应用程序使用哈希值作为分片键,并将信息存储在相应的物理分片中。

    • tips: 这样就可以完成对数据库的横向拓展,取数据的时候使用逆向操作即可。如果担心数据库的可用性,可以再引入数据库的主从模式。

2.如何对mysql数据库进行主从同步?

要进行MySQL数据库的主从同步,可以按照以下步骤进行:

确保服务器之间可以相互访问。主从服务器需要能够在网络上互相通信,所以需要确保网络连接正常,并配置好正确的IP地址和端口号。

在主服务器上设置binlog。binlog是MySQL的二进制日志,记录了所有对MySQL数据库执行的操作。要实现主从同步,需要在主服务器上开启binlog,并指定文件目录和文件名前缀。

在从服务器上设置server-id。server-id是MySQL的服务器ID,用于标识这个服务器。在从服务器上设置server-id,并确保与主服务器的server-id不同。

建立主从复制关系。在从服务器上执行以下命令:

sql CHANGE MASTER TO
MASTER_HOST='主服务器的IP地址',
MASTER_PORT=主服务器的端口号,
MASTER_USER='用户名',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='主服务器当前的binlog文件名',
MASTER_LOG_POS=主服务器当前的binlog位置; 以上命令中需要替换成实际的参数值。 5. 启动从服务器的复制进程。在从服务器上执行以下命令:

sql START SLAVE; 检查主从同步状态。可以使用以下命令检查主从同步状态:

sql SHOW SLAVE STATUS; 在返回的结果中,需要关注以下几个参数:

Slave_IO_Running: 从服务器的IO线程是否运行正常 Slave_SQL_Running: 从服务器的SQL线程是否运行正常 Master_Log_File: 从服务器当前处理的binlog文件名 Read_Master_Log_Pos: 从服务器当前处理的binlog位置 如果出现主从同步异常,可以查看error log和log_bin.err文件进行排查。 以上就是对MySQL数据库进行主从同步的基本步骤。需要注意的是,主从同步可能会因为网络问题、权限问题等原因导致失败,所以需要仔细检查每一步的配置和状态信息。