cacti mysql数据库的备份

运维 系统运维
Cacti是一套基于PHP,mySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。为了防止cacti mysql数据库损坏导致的问题,我们要进行数据库的备份!

cacti mysql数据库的备份步骤如下:

  为了防止cacti mysql数据库损坏导致的问题,在另一服务器上建立从服务器,现记录步骤

  1 建立从数据库

  groupadd mysql

  useradd -g mysql mysql

  ./configure --prefix=/cache/mysql --enable-assembler --enable-largefile --with-extra-charsets=all

  make

  make install

  cp support-files/my-medium.cnf /etc/my.cnf

  bin/mysql_install_db --user=mysql --datadir=/cache/mysql/var/

  #在/cache/mysql/var/下 建立mysql数据库,属主为mysql

  chgrp -R mysql .

  将mysql文件夹下的属组变为mysql

  启动mysql

  . mysql/bin/mysqld_safe

  将mysql设置为自动启动

  cp support/mysql.server /etc/rc.d/init.d/mysqld

  chown root.root /etc/rc.d/init.d/mysqld

  chmod 755 /etc/rc.d/init.d/mysqld

  chkconfig --add mysqld

  chkconfig mysqld on

  service mysqld restart

  设置mysql root用户的密码

  ./bin/mysqladmin -u root password 123456

  从服务器配置完毕。

#p#

  2 同步的建立

  2.1 主服务器上的更改

  vi /etc/my.cnf

  log-bin #启动支持replication的二进制日志

  binlog-do-db=cacti #指出要备份的数据库名称

  server-id=1 #指出此数据库为主数据库

  binlog-ignore-db=mysql #不备份mysql数据库

  注意:如果想做复杂的结构:比如说A备份到B,B再备份到C,那么B除了打开log-bin,还要打开log-slave-updates

  2.2 从服务器上的配置更改

  vi /etc/my.cnf

  server-id=2

  master-host=主机

  master-user=用户名

  master-password=密码

  master-port=端口

  replicate-do-db=需要复制的数据名

  replicate-ignore-db=需要复制的数据库名

  2.3 在主数据库上建立同步用户。

  grant replication slave on *.* to qxt@"%" identified by "qxt";

  grant replication client,reload,super on *.* to qxt@"%"

  flush privileges;

  #修改权限后需要刷新才能生效

  2.4 利用热备份将本地数据库拷贝到从数据库上

  2.4.1 数据库的导出

  mysqldump -u root -p cacti > /root/cacti.sql

  #mysqldump将cacti数据库的所有数据导出

  scp /root/cacti.sql IP:/root

  #将主数据库文件拷贝到从数据库所在的机器上

  并在上面执行

  mysql -u root -p cacti < /root/cacti.tzt

  #装载数据库

  2.5 锁住主数据库保证备份时没有数据进入主库干扰备份

  flush tables with read lock;

  停止主服务器上的mysql服务

  mysqladmin -u root shutdown

  注意:如果表的类型只是mylsam,可以不停止mysql数据库,但复制过程中要锁住,如果表类型是InnoDB则必须停止主数据库。查看)(show table status from cacti;)

  2.6 查看主库状态

  show master status;

  +------------------+----------+--------------+------------------+

  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

  +------------------+----------+--------------+------------------+

  | mysql-bin.000008 | 59170349 | | |

  +------------------+----------+--------------+------------------+

  1 row in set (0.00 sec)

  2.7 启动复制过程

  start slave;

  2.8 解锁

  unlock tables;

#p#

  2.9 测试

  1 在从数据库上

  mysql > show slave status\G;

  Slave_IO_Running: Yes #IO同步成功

  Slave_SQL_Running: Yes #数据库同步成功

  2 因为是主从数据库,所以在主数据库中插入数值,从数据库就会同步过去。

  例子: 在主数据库中插入test表

  mysql> use cacti;

  mysql> create table test(i int)

  #在test中插入一个值为1

  mysql> insert into test values(1);

  mysql> commit;

  #确认

  查询一下是否插入

  select * from test;

  +------+

  | i |

  +------+

  | 1 |

  +------+

  1 row in set (0.00 sec)

  进入从数据库检查:

  mysql> use cacti;

  Database changed

  mysql> select * from test;

  +------+

  | i |

  +------+

  | 1 |

  +------+

  1 row in set (0.00 sec)

  实验证明从数据库已经复制过来了。

  附: mysql> show processlist\G 查看从主数据库和从数据库复制的相关进程

  mysql> show processlist\G;

  *************************** 1. row ***************************

  Id: 1

  User: system user

  Host:

  db: NULL

  Command: Connect

  Time: 5159

  State: Waiting for master to send event

  Info: NULL

  *************************** 2. row ***************************

  Id: 2

  User: system user

  Host:

  db: NULL

  Command: Connect

  Time: 81

  State: Has read all relay log; waiting for the slave I/O thread to update it

  Info: NULL

  *************************** 3. row ***************************

  Id: 4

  User: root

  Host: localhost

  db: NULL

  Command: Sleep

  Time: 1166

  State:

  Info: NULL

  问题解决

  Slave_SQL_Running: No

  1.程序可能在slave上进行了写操作

  2.也可能是slave机器重起后,事务回滚造成的.

  一般是事务回滚造成的:

  解决办法:

  mysql> slave stop;

  mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

  mysql> slave start;

  解决办法二、

  首先停掉Slave服务:slave stop

  到主服务器上查看主机状态:

  记录File和Position对应的值

  进入master

  mysql> show master status;

  +----------------------+----------+--------------+------------------+

  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

  +----------------------+----------+--------------+------------------+

  | localhost-bin.000094 | 33622483 | | |

  +----------------------+----------+--------------+------------------+

  1 row in set (0.00 sec)

  然后到slave服务器上执行手动同步:

  mysql> change master to

  > master_host='master_ip',

  > master_user='user',

  > master_password='pwd',

  > master_port=3306,

  > master_log_file='localhost-bin.000094',

  > master_log_pos=33622483 ;

  1 row in set (0.00 sec)

  mysql> slave start;

  解决3 有些是日志错误造成的。

  方法删掉数据库日志。

  指定正确的日志位置和名称,再做同步。

通过上面的数据,我们知道如何进行cacti mysql数据库的备份!希望你们能学会,以便预防问题的出现!

【编辑推荐】

责任编辑:赵鹏 来源: 网络转载
相关推荐

2011-03-30 13:57:41

MySQL数据库自动备份

2019-03-01 13:40:01

MySQL数据库备份案例

2011-05-16 09:32:33

mysql数据库备份

2018-08-24 13:58:13

数据库MySQL备份

2011-03-25 10:47:17

Cacti备份数据

2011-03-25 12:57:13

备份Cacti数据

2013-05-24 13:24:46

Mysql数据库自动备份

2010-05-20 15:22:37

2011-04-06 09:09:17

MySQL数据库备份

2010-05-28 11:41:46

MySQL数据库备份

2011-03-31 12:17:07

Cacti备份

2010-06-04 09:58:03

MySQL数据库备份

2011-03-04 14:39:03

MySQL数据库mysqldump

2019-12-13 10:31:45

数据库SQLMySQL

2010-06-09 11:32:51

MySQL数据库备份

2010-10-12 17:23:40

MySQL命令行

2011-03-31 14:46:29

MySQL数据库备份

2011-03-03 16:10:04

Mysql数据库备份还原

2010-05-27 14:55:40

简单备份MySQL

2010-05-31 10:56:48

MySQL数据库
点赞
收藏

51CTO技术栈公众号