一般主从复制是主服务器数据库可读可写,从服务器数据库只读,而双机热备是主从服务器的数据库双向复制,从服务器数据库可读也可写。
说到主从复制不得不说–读写分离,此介绍请看这一篇 一文浅谈“读写分离”技术
双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。
- 可以做灾备,其中一个坏了可以切换到另一个。
- 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。 对于异地热备,尤其适合灾备。
主从复制原理
当主服务器上的数据发生变化的时候,主服务器会把这些变化记录到一个日志文件中,然后通知从服务器,从服务器会拉取这个日志文件中的变化信息,然后做出相应的数据变化。
主从复制配置和启动
可以参考这一篇高性能Mysql主从架构的复制原理及配置详解。
实现步骤如下:
- 确定主从:确定主从复制服务器。
- 创建主服务器复制用户:在主服务器上创建用于复制的用户,并为其授予适当的权限,用来给从服务器复制。
- 配置主服务器:在每台服务器上配置主服务器的 my.cnf 文件。
- 配置从服务器:在每台服务器上配置从服务器的 my.cnf 文件。
- 在从服务器启动复制:启动复制进程,并确保数据正常传输。
简略实现过程:
配置主从服务器的my.cnf
其中主服务器的my.cnf修改
log-bin=mysql-bin
server-id = 1
从服务器的my.cnf修改,要指定从服务器同步的博客数据库
log-bin=mysql-bin
binlog_format=mixed
server-id = 2
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 0 # 需要读写分离则这里填1,只读
replicate-do-db = myblog_db
主从服务器都重启下mysql。
创建主服务器复制用户
在主服务器上操作
mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup1@'从服务器ip' IDENTIFIED BY 'ErTu2QSGzs1';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show master status;
+------------------+-----------+--------------+------------------+-------------------+
<