一、mysql的备份与恢复
备份数据库:(将数据库dbname备份为dbname_backup.sql)
c:\>mysqldump -h localhost -u root -p dbname>dbname_backup.sql
备份表格:(将数据库dbname里的表mytable备份在C盘mytable.txt)
c:\>mysqldump -h localhost -u root -p dbname mytable>c:\mytable.txt
恢复数据库:
c:\>mysqladmin -h localhost -u root -p create 新dbname
c:\>mysqldump -h localhost -u root -p 新dbname <dbname_backup.sql
二、MySQL AB主从复制的实现
mysql AB复制一对多结构:
B
/
A —— C
\
D
若slave节点过多,这种方式master节点会负载过多,可以采用线性结构以减轻master的压力。
mysql的AB复制线性结构:
A(master)————B(slave1)————C(slave2)
A和B单向同步:
A:
#vi /etc/my.cnf
log-bin=mysql-bin #启动二进制日志系统
binlog-do-db=test #二进制需要同步的数据库名,如果需要同步多个库,例如要再同步 westos库,再添加一行“binlog-do-db=westos”,以此类推
server-id=1 #必须为 1 到 232–1 之间的一个正整数值
binlog-ignore-db=mysql #禁止同步 mysql 数据库
#mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 106 | test | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
#mysql>grant replication slave,reload,super on *.* to john@'192.168.0.37' identified by 'westos'; //授权
#mysql> flush privileges;
B:
#vi /etc/my.cnf
server-id=2
#mysql> change master to master_host='192.168.0.36',master_user='john',master_password='westos',master_log_file='mysql-bin.000003',master_log_pos=106;
#mysql>show slave status\G, \G以列表形式
Slave_IO_Running: Yes
Slave_SQL_Running: Yes 确保这两个线程启动,若没启动执行mysql>slave start;
A和B已经同步后加C时:
B上的操作:
1、sync data(mysqldump test>test.sql)
2、B grant授权
3、vi /etc/my.cnf 添加如下
log-bin=mysql-bin
binlog-do-db=test
binlog-ignore-db=mysql
log-slave-updates // 为了让slave也能充当master,
//写relay-log的时候也会写到bin-log
/etc/init.d/mysqld restart
C上操作如上一步B
AB双向同步和单(主主复制)向同步方法差不多,只需要将主从单向复制时的步骤反过来对应在设置以便即可。即主从服务器上同时运行master和slave。
转载于:https://blog.51cto.com/ty1992/1208505