mysql:简单的主从复制

两台 mysql 服务器:主(master)从(slave),写进主服务器的数据,从服务器也有一份

其实还有,主主复制之类的别的方案

原理:主执行一条语句,记录在 binlog,从读取 binlog(需要把binlog转换成relaylog) 也执行一遍。

根据原理分析:

  1. 主服务器要配置binlog?
  2. 从服务器要配置relaylog?
  3. 从服务器如何有权读取master的binlog?
    答:授权,master要授予slave账号

编辑mysql配置文件

一般yum安装的,路径为 /etc/my.conf
我们vim /etc/my.conf

主服务器配置:

# 一般会用 server-id 来区分不同服务(是习惯不是规定)
server-id=201
# 声明二级制日志文件为mysql-bin.xxxx
log-bin=mysql-bin
# 二级制日志的格式 mixed/row/statement
## statement:二进制记录执行语句,如update....
## row:二进制记录的是磁盘变化
## mixed:自动判断
binlog-format=mixed

二级制日志的格式哪个好?

// 语句长而磁盘变化少,宜用row
update age=age+1 where id=3
// 语句短而磁盘变化多,宜用statement,所有的工资都加100影响上万行数据
update salary=salary+100
// 拿不定用mixed混合,会自动判断

从服务器配置:

server-id=202
log-bin=mysql-bin
binlog-format=mixed
relay-log=mysql-relay

启动两台服务器:

service mysqld start

查看master,slave状态:

show master status
show slave status

这时slave是不行的,我们需要授予权限:

grant replication client,replication slave on *.* to rep@"192.168.1.%" identified by 'repl'

然后slave拿着账号来连接:

change master to
master_host="102.168.1.201",
master_user="repl",
master_password="repl",
master_log_filee="mysql-bin.000001",
master_log_pos=348

再查看状态:

show slave status

发现两者打通了。
关闭防火墙:

service iptables stop

重启:

restart slave

这时就完成了,你可以在第一个服务器创建一个数据库,会发现第二个服务器也有创建

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章