各种数据库读写分离小结

数据库读写分离设置 #

MySQL #

# master配置
server-id=200   # 一般取IP的最后一组数字
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-200
binlog-do-db=  # 同步的数据库的名称,全部可以使用 *
重启MySQL
# 客户端执行命令,授权给 slave
grant replication slave on *.* to 'zhang'@"IP" identified by '123456';
show master status;

# slave 更改配置
server-id=201
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-201

# slave mysql客户端执行命令
change master to master_host='10.7.152.77',  # 连接 master的 IP
master_user='zhang',  # master授权的用户
master_password='123456',  # 密码
master_log_file='mysql-bin-200.000002',  # master 的日志位置
master_log_pos=448;  # master 的 Position

start salve;
show slave status\G; # 查看状态

Redis #

  • 通过修改conf文件来配置主从, 一般都是在一台服务器上面作为专门的 redis 服务器
  • 启动 redis-server redis.conf

# master  master.conf

port 6000
requirepass 123456    # 480行
# redis-server master.conf
# 测试  redis-benchmark -h IP -p Port -a password
# 查看连接

# slave  slave.conf  应该配置多个 slave 对master进行读取

port 6001
slaveof 127.0.0.1 6000
masterauth 123456  # 对主机的验证,也是master的密码
requirepass 123456  # master设置的密码

# redis-server slave.conf

# 配置 sentinel(哨兵,守护进程),当master宕机时,选取 slave 作为master
# 更该 sentinel.conf文件(最好将原文件复制一份进行更改)

bind IP # master-IP 即 内网 IP
port 端口
sentinel monitor mymaster IP port num # master的公网IP,port,哨兵数,指当有num个哨兵同时监测到master宕机时,开始选举新的master
sentinel anth-pass mymaster <password>  # master的 密码
sentinel down-after-millisenconds mymaster 3000   # 开始投票的反应时间
sentinel failover-timeout mymaster 180000   # 设置返回的时间,在规定时间返回可以继续作为master

# 启动哨兵,哨兵也会宕机,应该多启动几个进行守护
redis-server sentinel.conf --sentinel

MongoBD #

  • 可以在 slave 上启动多个 salve 创建不同的目录进行保存数据,实现master执行20%的写和salve实现80%的查询操作
# master 启动
mongod --bind_ip_all --dbpath /data/master -master

# slave 启动
mongod --dbpath /data/slave -slave -source masterIP:port  # master的IP和端口

PostgreSQL #

这个很多,推荐参考这篇文章 https://yq.aliyun.com/articles/59344