查看: 2616|回复: 24

[集群服务] 两台服务器的超级作用

   关闭 [复制链接]

该用户从未签到

发表于 2015-5-2 22:47:34 | 显示全部楼层 |阅读模式
1. 服务器两台   centos-1(192.168.1.106)   centos-2(192.168.1.109)

2. 需求:在centos-1服务器上搭建nginx和php环境,并且程序也放在此服务器上;另一台服务器搭建mysql环境
   考虑:服务器安全性,高可用性(成本的最大化利用)、稳定性


----------


这里主要讲一下高可用性和安全性
高可用
1. 高可用性:
主要针对centos-2这台服务器,因为这台服务器只提供一个mysql服务,其他系统资源不能被充分的被利用,导致系统资源浪费
2. 可利用centos-2服务器做数据库备份

安全性
1. centos-1前端服务器,INPUT和OUTPUT链上的策略默认为DROP,指定打开某些常用的服务和端口。如:web服务:80、ssh:22、ftp服务:21,20
    ssh防爆力破解
2. centos-2服务器,即数据库服务器,INPUT和OUTPUT链上的策略也默认为DROP,对外,也只开启mysql服务和ssh服务


----------


在两台服务器上搭建相应的环境:
centos-1 nginx+php
centos-2 mysql
具体环境搭建方法就不详细介绍了


----------


设置防火墙规则以保证服务器的安全性
1. centos-1上的防火墙规则:
游客,如果您要查看本帖隐藏内容请回复


2. centos-2上的防火墙规则:
游客,如果您要查看本帖隐藏内容请回复


----------


centos-2数据库自动备份,要求实时备份
备份方式:
1. 直接备份相应的数据库
    mysqldump -uroot -p 数据库名称 > 备份的路径/数据库名称.sql  (输入root密码即可)
   恢复相应的数据库
    mysql -uroot -p 数据库名称 < 备份的路径/数据库名称.sql  (输入root密码即可)
    *注意:这里的“数据库名称”在数据库里面必须要存在,不然恢复不成功,报错;如果不存在,在数据库里新建一个同名的数据库即可,然后再恢复*
2. 备份全数据库+启用二进制日志记录功能(增量备份和数据恢复)
    小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份。增量备份的原理就是使用了mysql的binlog日志。
本次操作的MySQL版本为5.5.40 for Linux (x86_64)。

增量备份要确保打开了二进制日志,参考mysql的日志系统:

mysql> show variables like '%log_bin%';
首先对pak数据库做一个完整备份:

没有启动日志记录功能的话,修改配置文件,把log-bin打开即可,最后重启服务
EXPIRE_LOGS_DAYS
此参数是设置日志的过期天数,过期的日志将会被自动删除,这有利于减少我们管理日志的工作量,需要修改my.cnf
EXPIRE_LOGS_DAYS=3
这里我们设定保存日志为3天,3天之后过期的日志将被自动删除

$ mysqldump -h localhost -upak -ppwd -P3306 --master-data=2 --single-transaction --opt pak > pak_bak_full.sql
这时候就会得到一个全备文件pak_bak_full.sql。mysqldump操作会导致滚动一次log,假设新的binlog文件是mysql-bin.000002。

模拟插入数据和误操作

a. 在pak库的某个表插入一些数据,然后执行flush logs命令。这时将会产生一个新的二进制日志文件mysql-bin.000003,mysql-bin.000002则保存了全备过后的所有更改,既增加记录的操作也保存在了mysql-bin.00002中。

b. 再在pak库中的t_user表中增加两条记录,然后误删除t_user表。t_user中增加记录的操作和删除表的操作都记录在mysql-bin.000003中。

开始恢复

恢复过程不要记录日志:

mysql > set global sql_log_bin=0;
首先导入全备数据

$ mysql -h localhost -upak -ppwd < pak_bak_full.sql

mysql> source /path/backup/pak_bak_full.sql
我们也可以看到全备时的binlog位置:

head -50 backup-file.sql |grep 'CHANGE MASTER'
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4321;
查看当前所在二进制日志中的位置:

mysql> show master status;
根据上面两个position能大概确定需要完整恢复哪几个binlog文件。

恢复mysql-bin.000002
在待恢复的position或时间点以前、全备以后的binlog需要全部恢复,多个文件以空格隔开

$ mysqlbinlog /var/lib/mysql/mysql-bin.000002 | mysql -uroot -p
此时查询可以得到前两条数据。

恢复部分mysql-bin.000003
这个日志中包括了新增记录和误删表两个部分,我们需要恢复到新增记录之后、误删操作以前的位置。

如果知道误操作的命令如DROP TABLE,则可以通过下面的方法在binlog文件中找到误操作之前的那个position:
(如下面的信息显示,误操作DROP TABLE之前的pos是775,在datetime 141204 15:08:04或pos 882时完成DROP TABLE操作)

$ mysqlbinlog /var/lib/mysql/mysql-bin.000003 |grep -C 5 'DROP TABLE'
#141204 15:07:05 server id 1  end_log_pos 775   Xid = 376
COMMIT/*!*/;
# at 775
#141204 15:08:04 server id 1  end_log_pos 882   Query   thread_id=10    exec_time=0 error_code=0
SET TIMESTAMP=1417676884/*!*/;
DROP TABLE `t_user` /* generated by server */
/*!*/;
# at 882
恢复命令:

$ mysqlbinlog /var/lib/mysql/mysql-bin.000003 --stop-position=775 | mysql -h localhost -uroot -p
如果position难以确定,但知道需要恢复到的确切(服务器)时间,也可以使用datetime:

$ mysqlbinlog /var/lib/mysql/mysql-bin.000003 --stop-datetime="2014-12-04 15:08:00" | mysql -uroot -p
如果不是误操作导致的,而是迁移数据库,那么不需要position或datetime,使用所有binlog文件增量恢复即可。

确定恢复成功后记得打开日志记录:

mysql > set global sql_log_bin=1;
报错
1. unknown variable 'default-character-set=utf8'
在使用mysqlbinlog查看二进制日志的时候,提示下面的错误:

/usr/local/mysql/bin/mysqlbinlog: unknown variable 'default-character-set=utf8'
原因是在我为了统一mysql客户端到服务端的的字符编码,在/etc/my.cnf文件的[client]、[mysqld]等节加入了default-character-set = utf8,mysqlbinlog会从my.cnf中的[client]读取配置,但奈何mysqlbinlog并不认识这个选项(据说是个bug)导致的。

应对这个bug的方法有两个:
第一,自然是注释到[client]中的这个字符集配置;
第二,改用loose-default-character-set = utf8。在选项前加了loose-,表示当程序不认识此选项时会略过此选项,并给出一个警告。



----------


测试
省略...
  • TA的每日心情

    2017-8-1 11:07
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2015-5-3 01:14:07 | 显示全部楼层
    学习了
  • TA的每日心情
    慵懒
    2017-9-25 00:09
  • 签到天数: 416 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-5-3 15:00:12 | 显示全部楼层
    学习了!
  • TA的每日心情
    奋斗
    2017-8-30 16:53
  • 签到天数: 287 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2015-5-4 15:11:47 | 显示全部楼层
    学习了!
  • TA的每日心情
    开心
    2017-6-14 10:10
  • 签到天数: 74 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-6-8 10:07:10 | 显示全部楼层
    棒棒的,老大
  • TA的每日心情

    2016-5-4 11:34
  • 签到天数: 77 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-6-8 22:15:15 | 显示全部楼层
    学习了!
  • TA的每日心情
    开心
    2015-7-3 14:54
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2015-6-19 07:01:45 | 显示全部楼层
    长知识
  • TA的每日心情
    慵懒
    2017-12-21 18:14
  • 签到天数: 53 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-7-3 22:16:54 | 显示全部楼层
    本帖最后由 shentoudashen 于 2015-7-3 22:18 编辑

    路过看风景
  • TA的每日心情
    开心
    2015-9-24 09:41
  • 签到天数: 32 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-8-6 22:11:43 | 显示全部楼层
    长见识了。。。
  • TA的每日心情
    开心
    2015-9-24 09:41
  • 签到天数: 32 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-8-8 07:48:42 | 显示全部楼层
    厉害。。
  • TA的每日心情

    2016-7-21 10:07
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2015-8-24 10:43:50 | 显示全部楼层
    我看看!!
  • TA的每日心情
    慵懒
    2017-9-25 00:09
  • 签到天数: 416 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-9-8 19:44:41 | 显示全部楼层
    学习了!
  • TA的每日心情
    奋斗
    2017-7-13 09:38
  • 签到天数: 243 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2015-11-5 10:04:57 | 显示全部楼层
    看下  我一般output都是accept的
  • TA的每日心情
    奋斗
    2018-1-18 15:13
  • 签到天数: 124 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-11-8 10:53:36 | 显示全部楼层
    nice
  • TA的每日心情
    无聊
    2017-8-8 18:36
  • 签到天数: 448 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-11-13 20:37:55 | 显示全部楼层
    学习了
  • TA的每日心情
    无聊
    2016-3-23 12:19
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2015-12-7 18:37:25 | 显示全部楼层
    谢谢分享!!!!
  • TA的每日心情
    慵懒
    2016-12-3 10:30
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2016-1-8 20:21:24 | 显示全部楼层
    谢谢
  • TA的每日心情
    开心
    2017-11-6 16:40
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2016-3-17 09:48:28 | 显示全部楼层
    谢谢楼主分享
  • TA的每日心情
    擦汗
    2018-2-2 09:46
  • 签到天数: 278 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2016-3-17 11:45:37 | 显示全部楼层
    楼主厉害的样子
  • TA的每日心情

    2016-8-21 11:40
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2016-5-7 10:24:16 | 显示全部楼层
    学习了
  • TA的每日心情
    奋斗
    2016-8-21 17:38
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2016-8-21 17:41:12 | 显示全部楼层
    两台服务器的超级作
  • TA的每日心情
    擦汗
    2018-1-22 09:02
  • 签到天数: 169 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-8-23 13:13:17 | 显示全部楼层
    学习下
  • TA的每日心情
    无聊
    2017-8-26 00:38
  • 签到天数: 43 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2016-8-31 08:00:04 | 显示全部楼层
    看看~~~~~~~~~~~~~
  • TA的每日心情
    奋斗
    2017-7-14 18:56
  • 签到天数: 74 天

    连续签到: 5 天

    [LV.6]常住居民II

    发表于 2016-10-17 10:50:28 | 显示全部楼层
    谢谢分享谢谢分享谢谢分享
  • TA的每日心情
    无聊
    2017-9-25 16:26
  • 签到天数: 173 天

    连续签到: 2 天

    [LV.7]常住居民III

    发表于 2016-10-30 01:43:42 | 显示全部楼层
    thank for yuor sharing
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    站长推荐上一条 /1 下一条