MySQL5.5各架构复制(二)

2014-11-24 18:32:32 · 作者: · 浏览: 1
|
| testdb |
+--------------------+
5 rows in set (0.05 sec)
可以看到已经成功复制。

4、一些建议配置

4.1、在主服务器上开启随时同步二进制日志至文件中,默认主服务器生成的二进制日志先放在缓存中,而从服务器需要靠主服务器上生成的二进制文件来保持和主服务器的一致,所以应该让主服务器产生二进制文件后立即同步至二进制日志文件中。

修改MySQL的主配置文件my.cnf添加如下行:
[root@master ~]# vim /etc/my.cnf

sync_binlog=1

[root@master ~]# service mysqld restart //重启mysql服务使配置生效
在主服务器上查询参数是否生效
mysql> SHOW GLOBAL VARIABLES LIKE 'sync_binlog';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog | 1 |
+---------------+-------+
1 row in set (0.00 sec)

4.2、适用于innodb引擎,使没一次产生的事务日志同步到磁盘之后才返回成功,这样可以有助于保证事务日志的安全性,避免因为特殊原因造成事务日志的丢失,但这样也会降低在执行大量需要记录事务日志操作时的执行速度。

修改Mysql的主配置文件my.cnf添加如下行:
[root@master ~]# vim /etc/my.cnf

innodb_flush_logs_at_trx_commit=1

4.3、设置从服务器为只读,避免误操作造成主从服务器的数据不一致

[root@slave ~]# vim /etc/my.cnf

read_only=1

5、如果主服务器运行了一段时间,从服务器为新增的服务器时就不能根据以上方法来配置了,需要现在主服务器上备份:

先在主服务器上给mysql施加读锁
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

通过逻辑卷创建快照备份mysql,这里假设mysql的数据目录的挂载的设备为/dev/mysqlvg/mysqllv
[root@master ~]# lvcreate -L 50M -s -p r -n mysql-snap /dev/mysqlvg/mysqllv

在逻辑卷上创建好快照之后查看当前mysqld的二进制文件及Position的数值,完成后立即释放之前施加的读锁
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 478 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

释放读锁:
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

挂载刚创建的逻辑卷快照并备份至从服务器
[root@master ~]# mount /dev/mysqlvg/mysql-snap /mnt
[root@master ~]# tar cf allmysql.tar /mnt/ //如果数据文件过大就压缩

拷贝该归档文件至从服务器,把内容覆盖至从服务器mysql的数据目录,并移除逻辑卷快照
[root@master ~]# umount /mnt
[root@master ~]# lvremove /dev/mysqlvg/mysql-snap

其他步骤与上边的从服务器配置相同,参考-->2.2、配置主服务器相关参数,注意替换:MASTER_LOG_FILE和MASTER_LOG_POS参数的值为释放读锁时查看到的信息。

至此就可以实现主从复制了。