几行代码实现mysql数据库的自动备份

Posted 分享创造快乐,技术成就梦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了几行代码实现mysql数据库的自动备份相关的知识,希望对你有一定的参考价值。

web服务文件更新自动同步数据库主从复制shell脚本实现网站代码备份和mysql备份

 

基搭建LAMP环境,并实践基于DNS做基于域名的虚拟主机中的环境,重新搭建一个同样的环境

要求:

     a)实现web服务文件更新的自动同步到另一台机器上

     b)数据库实现主从复制

     c)通过shell脚本实现网站源代码备份和mysql备份,备份策略包括全量备份、增量备份、差异备份

 

 

a,实现web服务文件更新的自动同步到另一台机器上;

  1,httpd服务器上建立基于FQDN的两个虚拟web站点,并创建相关目录。

                              技术分享

技术分享

2,修改测试windows主机的hosts文件,并编辑两个虚拟web站点对应的目录下的index.html文件。

技术分享

 

 

 

 

技术分享

3,测试两个虚拟web站点均可正常访问。

技术分享

技术分享

 

4,在linux2主机上安装samba并启动服务,

samba间接以及安装配置:

    实现的是LinuxWindows间资源互通的问题:在Linux下架设Samba服务器,在Windows下来访问。

  安装配置:

         安装命令: yuminstall  samba  samba-client -y

         服务启动:service nmbstart;service smb start

         服务脚本:

                   /etc/rc.d/init.d/nmb

                   /etc/rc.d/init.d/smb

         主配置文件:

                   /etc/samba/smb.conf

         修改配置文件:将工作组修改为和windows一样WORKGROUP,定义测试共享环境,然后重启服务

             vim smb.conf

                 vorkgroup=WORKGROUP

                 service nmb restart ; service smb restart

技术分享

技术分享


技术分享

 技术分享

使用smbpasswd命令将系统用户smbuser1加入samba用户:

     smbpasswd:

          -a Sys_User: 添加系统用户为samba用户

          -d :禁用

          -e: 启用

          -x: 删除

  技术分享

在另一台centos主机上验证:

  技术分享

技术分享

windows主机中验证:

 技术分享

技术分享

 

httpd服务器端(samba客户端)挂载samba共享目录:

      注意:需安装samba-clientcifs-utils程序;否则无法挂载:

        设置SMB共享目录:

vi /etc/samba/smb.conf ,在最后加入想要共享的文件夹:

[share]

               path = /shared

               available = yes

               browsealbe = yes

               public = yes

               writable = yes

        设置SMB用户:

samba的帐户设置有点特别,它使用的是系统的帐户,但是要把账户映射到samba的帐户数据库,而且要设置samba密码才能使用如果该账户只用于samba访问,可以不设置系统密码,而只为账户设置samba的密码

//我使用已有的用户,设置smb用户密码后始终不能成功从远程访问,所以新建了一个系统用户

useradd smbtest

passwd 654321

//设置smb用户的密码

smbpasswd -asmbtest//增加SMB用户,同时会提示设置密码

smbpasswd x smbtest//删除SMB用户

技术分享

     5,在httpd服务器主机上执行如下命令挂载:

        mount -t cifs -ousername=smbtest,password=654321 //192.168.1.19/shared  /mont

         注意:/mont目录需在本地先创建好。

       技术分享技术分享

       

     6,设置自动挂载,并确认在httpd服务器上可用正常自动挂载:

          先设置nmb,smb,httpd开机启动服务:

           chkconfig httpd on

chkconfig nmb on

chkconfig smb on

   //192.168.1.19/shared  /mont cifs  defaults,_netdev,username=smbtest,password=654321,rw 0  0

 

 技术分享

 

 

7,在samba服务器(linux2)上共享目录上编辑Index.html文件;

技术分享

 

技术分享

 

8,删除vhosts目录下web1web2目录中htdocs目录,然后将samba共享的挂载目录/mont软连接到web1web2目录,这样web1web2两个虚拟站点的文件更新同步至另一台机器。

技术分享

9,通过windows主机访问验证:

技术分享

技术分享

b,数据库主从复制:

  MySQL是开源的关系型数据库系统。复制(Replication)是从一台MySQL数据库服务器(主服务器master)复制数据到另一个服务器(从服务器slave)的一个进程。

  服务器IP:192.168.1.19  ,从服务器IP192.168.1.20

1、编辑数据库配置文件my.cnf,一般在/etc/目录下。

#vi /etc/my.cnf

[mysqld]的下面加入下面代码:

log_bin=mysql_bin   //[必须]启用二进制日志

server_id=1      //[必须]服务器唯一ID

2、然后重启MySQL:

 

技术分享

 

3、登录MySQL服务器。

  先变更root帐号密码:

  技术分享

退出mysql后重新登入:

#mysql -uroot -p

在主服务器新建一个用户赋予“REPLICATION SLAVE”的权限。你不需要再赋予其它的权限。在下面的命令, %表示所有的IP

 

技术分享

4,退出mysql,重启mysql服务后,再次登录mysql查看

 技术分享

    注意:记录下filepos的值,执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

5,修改从服务器/etc/my.cnf文件并启动mysql服务器。

  技术分享

6,登录从服务器并修改root密码后退出重新登录;

 技术分享

7配置从服务器Slave

  mysql>  CHANGE MASTER TO

   -> MASTER_HOST=‘192.168.3.11‘,

   -> MASTER_PORT=3306,

   -> MASTER_USER=‘rep1‘,

   -> MASTER_PASSWORD=‘123456‘,

   -> MASTER_LOG_FILE=‘mysql_bin.000001‘, //此处对应主服务器statusfile.

->MASTER_LOG_POS=106; //此处对应主服务器statusPosition

配置完成后退出,并重启服务器后再登入mysql

技术分享

 

8、检查从服务器复制功能状态:

技术分享

  Slave_IO_Running: Yes   //Yes表示连接正常

Slave_SQL_Running: Yes   //Yes表示连接正常

 

注意:作此配置之前使用了service iptables stop setenforce0 命令关闭了防火墙和selinux

     从服务器复制时,会在其数据目录中发现文件master.infoHOSTNAME-relay-log.info。从服务器使用这两个文件跟踪已经处理了多少主服务器的二进制日志

 

c,通过shell脚本实现网站源代码备份和mysql备份,备份策略包括全量备份、增量备份、差异备份

   1,先建立好备份存放目录:

     mkdir  /myback/{webback,sqlback}

2,编写脚本备份:

    技术分享

  3,查看执行目录验证:

       技术分享

 

 


本文出自 “前进的轨迹” 博客,请务必保留此出处http://lisoy79.blog.51cto.com/10836537/1752757

以上是关于几行代码实现mysql数据库的自动备份的主要内容,如果未能解决你的问题,请参考以下文章

web服务文件更新自动同步数据库主从复制shell脚本实现网站代码备份和mysql备份

如何在生产环境下实现每天自动备份mysql数据库

如何实现Mysql数据库每天自动备份定时备份?

如何实现Mysql数据库每天自动备份定时备份

使用Shell脚本实现自动备份MySQL数据库

使用Shell脚本实现自动备份MySQL数据库