mysql分区表主从,MySQL分区与主从的学习笔记

1 分区相关

MySQL5.6中,分区技术只支持水平分区,而不支持垂直分区,分区支持大部分的存储引擎,但是MERGE, CSV, FEDERATED存储引擎不支持。

使用KEY或者LINEAR KEY进行分区是支持NDB(网络数据库)的,但是其他分区方式不支持。

在MySQL中查看是否是支持分区技术,使用命令 SHOW PLUGINS 进行查看,如果存在名称为 partition 的插件,状态为 ACTIVE 则说明分区技术可用。

MySQL5.6支持显式的分区查询,如 SELECT * FROM T PARTITION(p0, p1) WHERE c < 5,可以只从p0,p1分区进行查询

支持的分区类型:

RANGE 根据给定列的值的范围进行分区。

LIST 与RANGE类似,不过它通过判断给定列的值是否在独立的值的集合中进行分区。

HASH 这种分区根据对列进行操作的自定义表达式的值进行分区。这个自定义的函数可以包含任何可用的MySQL表达式,但是需要产生一个非负的值,扩展类型有LINEAR HASH.

KEY 这种分区方式与HASH类似,区别是只需要提供一列或者多列的值,通过MySQL自己的哈希函数进行计算,扩展类型有LINEAR KEY.

常用的分区方式可以通过日期, 时间 进行分区。当使用KEY或者LINEAR KEY 方式进行分区的时候,可以直接使用TIME, DATETIME, DATE作为分区列而不需要执行任何的修改(常用时间函数:TO_DAYS(), YEAR, TO_SECONDS, WEEKDAY(),MONTH等)。

2 主从相关

主库和从库都需要配置一个唯一的ID(server-id), 每一个从库都必须配置主库的host名, 日志文件名和配置文件中的位置。

2.1 配置Master

修改 my.cnf 或者 my.ini 文件,在[mysqld]部分,增加(去掉注释)下列选项:

[mysqld]

log-bin=mysql-bin

server-id=1

修改后,重启mysql服务

如果没有设置server-id或者是设置其为默认值 0,master将会拒绝所有slave的连接请求。 使用InnoDB的事务在进行复制的时候,应该设置innodb_flush_log_at_trx_commit=1和sync_binlog=1以获取最佳的稳定性。 确保 skip-networking选项是禁止的,否则如果网络被禁止了,从库将无法与主库进行交流。

主库中需要为从库创建连接用户,主库上的任何具有REPLICATION SLAVE权限的用户都可以作为从库的连接用户。

mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';

如果在主库上已经存在数据了,在与从库进行同步之前,必须先停止主库上的处理进程,然后获取当前二进制日志文件的坐标并dump它的数据。

下面的步骤用于获取主库的二进制日志的坐标:

使用命令行控制台连接到主库上,执行如下命令:

mysql> FLUSH TABLES WITH READ LOCK;

使用 UNLOCK TABLES 释放锁

mysql > SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000003 | 73       | test         | manual,mysql     |

+------------------+----------+--------------+------------------+

如果在启用log-bin之前,主库已经运行一段时间了,则使用SHOW MASTER STATUS命令查看到的日志文件名和位置将会是空的,在这种情况下,在从库中指定日志文件和位置分别为''和4.

如果在进行从库同步复制之前,主库中已经存在数据了,请保持读锁,使用下面的方法将主库的数据复制到从库中。

使用mysqldump创建要复制的所有数据库的一个快照,然后导入到从库中。

# mysqldump -uroot --lock-all-tables --events --all-databases --master-data > dbdump.db

导入dbdump.db文件,使用命令shell> mysql < dbdump.db

2.2 配置slave

修改配置文件

[mysqld]

server-id=2

在从库中,为了进行复制过程,并不需要启用log-bin。但如果在从库中启用log-bin的话,你可以在从库上进行二进制日志备份和崩溃后的恢复,或者将从库作为一个复杂的复制拓扑网络的一部分(例如,从库作为一个其它从库的主库)。

建立从库到主库的连接:

mysql> CHANGE MASTER TO

->     MASTER_HOST='master_host_name',

->     MASTER_USER='replication_user_name',

->     MASTER_PASSWORD='replication_password',

->     MASTER_LOG_FILE='recorded_log_file_name',

->     MASTER_LOG_POS=recorded_log_position;

例如:

mysql> change master to master_host='10.58.91.4', master_user='repl', master_password='888888',master_log_file='mysql-bin.000002', master_log_pos=385;

注意: 复制不能使用UNIX socket文件,只能使用TCP/IP连接主库。

启动从库

mysql> start slave;

如果出现无法连接的问题,请检查是否服务器iptables对端口有限制

3 常用命令

授权任意主机以root方式访问

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION

查看server-id

mysql> show variables like 'server_id';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| server_id     | 0     |

+---------------+-------+

1 row in set (0.01 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值