MySQL主从复制和读写分离

A、MySQL主从复制

主库:(192.168.1.202:33060)

编辑mysql配置文件my.cnf或者其包含文件,然后重启(开启主库二进制日志和设置服务器id)

[mysqld]
log-bin=mysql-bin
server-id=1

登入mysql命令行查看配置是否生效

 设置授权用户

-- 创建授权用户repl,密码111111,指定用户允许登陆的主机地址,%表示不限制,localhost表示本地
CREATE USER 'repl'@'192.168.1.202' IDENTIFIED BY '111111';
-- 分配权限 db_name.tbl_name, *.* 表示所有库的所有表
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.202';
-- 刷新权限
FLUSH PRIVILEGES;

从库:(192.168.1.202:33061)

编辑mysql配置文件my.cnf或者其包含文件,然后重启(设置服务器id)

[mysqld]
server-id=2

 开启同步:(在从库命令行中执行)

-- 根据主库配置信息设置参数,执行同步授权命令,根据自己实际情况配置
CHANGE MASTER TO
    MASTER_HOST='192.168.1.202',
    MASTER_PORT=33060,
    MASTER_USER='repl',
    MASTER_PASSWORD='111111',
    MASTER_LOG_FILE='mysql-bin.000003',
    MASTER_LOG_POS=771;

-- 启动slave同步进程
start slave;

-- 关闭同步进程
-- stop slave

  Slave_IO_Running: Connecting
  Slave_SQL_Running: Yes

表明从库同步进程已成功配置,可以在主库上创建数据库、表及数据来检测同步结果。

附,如果需要指定数据库或表进行复制,可以通过在mysql配置文件中设置相关参数来实现,有主库、从库2种配置方式:

1、主库中设置(主库bin-log记录指定数据库、表):

master开启二进制日志后默认会同步所有数据库,这时可以设置my.cnf参数来至指定同步数据库表

[mysqld]

# binlog-do-db 二进制日志记录的数据库(多数据库用逗号,隔开)
# binlog-ignore-db 二进制日志中忽略数据库 (多数据库用逗号,隔开)
# 忽略数据库
# binlog-ignore-db = mysql  
# binlog-ignore-db = test1  
# 只同步数据库
# binlog-do-db = test2

2、从库中设置(从库):

# 设定需要的数据库(多数据库使用逗号,隔开)
# replicate-do-db = db_name
# 设定需要忽略的数据库 (多数据库使用逗号,隔开)
# replicate-ignore-db = db_name
# 设定需要复制的表
# replicate-do-table = db_name.tbl_name 
# 设定需要忽略的复制表
# replicate-ignore-table = db_name.tbl_name
# 支持通配符的replicate-do-table
# replicate-wild-do-table = foo%.bar% 
# 支持通配符的replicate-ignore-table
# replicate-wild-ignore-table = foo%.bar% 


#slave-skip-errors=1000,1001,1002 #跳过指定error no类型的错误
#slave-skip-errors=all #跳过所有错误

B、MySQL读写分离

通常MySQL主从集群为一主多从和多主多从的形式,我们可以把sql写操作发到主库执行、读操作发到从库执行,如果某些查询操作有很高的实时性要求,那么可以选择读主库,当然也可以引入缓存方案来解决这个问题。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值