当前位置:首页 » 数据仓库 » mysqldump同步数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mysqldump同步数据库

发布时间: 2022-07-01 10:25:00

A. mysql数据同步问题

查找MYSQL主从同步方案,
已经很成熟的方案了,一主,多从,主服务器负责写入,从服务器只读。

mysql主从方案主要作用:

读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

发扬不同表引擎的优点。目前Myisam表的查询速度比innodb略快,而写入并发innodb比myIsam要好。那么,我们可以使用innodb作为master,处理高并发写入,使用master作为slave,接受查询。或在myisam slave中建立全文索引,解决innodb无全文索引的弱点。

热备,slave和master的数据“准实时”同步。

准备工作。先分别安装两台MYSQL(主服务器:192.168.84.137,从服务器:192.168.84.130)

配置MASTER。找到my.cnf文件,修改:

server-id = 1

log_bin = /var/log/mysql/mysql-bin.log

expire_logs_days = 10

max_binlog_size = 100M

binlog_do_db = study #要备份的数据库

#binlog_do_db = backup #要备份的数据库

#binlog_ignore_db = test #不需要备份的数据库

其中,虽然作为主机,但server-id不是必须为1.但一般都填1

binlog_do_db为需要复制的db。 binlog_ignore_db为忽略复制的db。需要增加DB的话,就增加相应的一行。(最好写在从库配置)

重启master数据库,运行检查:

mysql> show master status; #检查是否以master形式启动了。

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000001 | 1087 | study,backup | test

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

1 row in set (0.00 sec)

mysql> show variables like "%log%";

#需要看到这样的一行,说明binlog已经开启了: log_bin | ON

在master上为slave建立用户

mysql> grant replication slave on *.* to 'replication'@'192.168.84.130' identified by '123456';

这样,主机配置完毕。

配置slave

server-id = 2 #随便什么数字,多台slave注意不能为重复就可以了。

#log_bin = /var/log/mysql/mysql-bin.log #slave的binlog就没有必要再开启了。注释掉。

master-host = 192.168.84.137 #master的IP

master-user = replication #上面操作中,建立的用户名

master-password = 123456 #上面操作中,建立的密码

配置生效后,配置与master的连接:

mysql> CHANGE MASTER TO

-> MASTER_HOST='192.168.84.137',

-> MASTER_USER='replication',

-> MASTER_PASSWORD='123456',

-> MASTER_LOG_FILE='mysql-bin.000001',

-> MASTER_LOG_POS=1087;

其中MASTER_HOST是master机的ip,MASTER_USER和MASTER_PASSWORD就是我们刚才在master上添加的用户,MASTER_LOG_FILE和MASTER_LOG_POS对应与master status里的信息

slave:mysql> show slave status/G;

B. mysql主从同步 如何同步已有的数据,

--主机开两个窗口,一个进入mysql,一个是shell
--主机阻断写操作
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql>
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 1529881 | openser | mysql,test |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
--另外一个窗口导出主机数据库
mysqlmp -u root -p123456 --opt -R openser > openser20121203.sql
--刚才的窗口主机解锁
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql>
--打包数据文件到从机
drop database openser;
create database openser;
mysql -u root -p123456 openser < openser20121127.sql
--从机操作
SLAVE STOP;
reset slave;
CHANGE MASTER TO MASTER_HOST='192.168.21.26',
MASTER_USER='repl_user',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=1529881;
start slave;
show slave status\G

C. mysql数据库dtid同步如何追加

--主机开两个窗口,一个进入mysql,一个是shell
--主机阻断写操作
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql>
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 1529881 | openser | mysql,test |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
--另外一个窗口导出主机数据库
mysqlmp -u root -p123456 --opt -R openser > openser20121203.sql
--刚才的窗口主机解锁
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql>
--打包数据文件到从机
drop database openser;
create database openser;
mysql -u root -p123456 openser < openser20121127.sql
--从机操作
SLAVE STOP;
reset slave;
CHANGE MASTER TO MASTER_HOST='192.168.21.26',
MASTER_USER='repl_user',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=1529881;
start slave;
show slave status\G

D. 怎样实现MySQL数据库双机热备份 MySQL数据同步

还好MySQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现MySQL数据库的热备份。 2、要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备MySQL的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。 3、设置主数据库服务器: a.首先查看主服务器的版本是否是支持热备的版本。然后查看my.cnf(类Unix)或者my.ini(Windows)中MySQLd配置块的配置有没有log-bin(记录数据库更改日志),因为MySQL的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。 server-id=1 //数据库的id这个应该默认是1就不用改动 log-bin=log_name //日志文件的名称, //这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称 binlog-do-db=db_name //记录日志的数据库 binlog-ignore-db=db_name //不记录日志的数据库以上的如果有多个数据库用","分割开 然后设置同步数据库的用户账号 MySQL> GRANT REPLICATION SLAVE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';4.0.2以前的版本, 因为不支持REPLICATION 要使用下面的语句来实现这个功能 MySQL> GRANT FILE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';设置好主服务器的配置文件后重新启动数据库 b.锁定现有的数据库并备份现在的数据 锁定数据库 MySQL> FLUSH TABLES WITH READ LOCK;备份数据库有两种办法一种是直接进入到MySQL的data目录然后打包你需要备份数据库的文件夹,第二种是使用MySQLmp的方式来备份数据库但是要加上"--master-data " 这个参数,建议使用第一种方法来备份数据库

E. 如何利用mysqlmp备份MySQL数据库

一、数据备份的重要性
工作中,如果意外删除了重要的文件或者目录的话,那结果可就惨了。尤其是当误删除的数据涉及重要的客户或者关键项目,并且这些数据无法轻易重新创建的时候,那滋味,不用我说你也能想象得到。不巧的是,像这样的数据在公司环境中随处可见,例如销售记录、客户联系方式,等等。
二、关于mysqlmp
MySQL自身提供了许多命令行工具,例如mysql工具可以用来与MySQL的数据库模式、数据、用户和配置变量进行交互,而mysqladmin工具则可以进行各种管理任务,还有就是下面将要介绍的mysqlmp。此外还有很多,不过那超出了本文的讨论范围。工具mysqlmp既可以用来备份数据库模式,还可以用来备份数据;利用它,我们不仅可以对一个服务器上的所有数据库进行地毯式的备份,同时我们还可以选择性地备份某个数据库,甚至数据库中指定的某些表。
当在服务器上安装MySQL的时候,应修改系统路径以便使全局命令行可以访问各个客户程序。打开终端窗口,并执行下列命令:%>mysqlmp Usage: mysqlmp [OPTIONS] database [tables] OR mysqlmp [OPTIONS]
databases [OPTIONS] DB1 [DB2 DB3...] OR mysqlmp [OPTIONS] all-databases [OPTIONS]
For more options, use mysqlmp help
这里给出了使用mysqlmp程序的方法。举例来说,若要备份所有数据库模式和数据至文件backup092210.sql的话,可以执行如下所示的命令:%>mysqlmp -u root -p all-databases > backup092210.sql Enter password:
这里,为了能够访问所有数据库,我们需要一个root权限,所以这里需要在提示符后面输入相应口令。此外,如果你是在开发用的服务器上练习这些命令的话,不妨花一些时间看看备份文件的内容。这时您会看到一系列的SQL语句,先是删除各个表后重新创建的语句,然后是重新创建相关数据的语句。另外,由于上面的例子中我们对所有数据库进行备份,所以您还会发现,备份文件将创建每个数据库(如果它还没有存在的话),然后通过USE命令切换到该数据库,进而创建与该数据库相关的表跟数据。
若要备份单个数据库,例如要备份名为wiki的数据库到一个名为wiki-backup092210.sql的文件中,我们可以使用如下所示的命令:%>mysqlmp -u root -p wiki > wiki-backup092210.sql Enter password:
最后,若要备份数据库中名为users的表的话,例如要把它备份到名为wikiusers-backup092210.sql的文件中,我们可以使用如下所示的命令:%>mysqlmp -u root -p wiki users > wikiusers-backup092210.sql Enter password:
三、调整备份内容
有时候,我们可能只想备份数据库的模式,或者只想备份数据库的数据。为了备份数据库模式,可以向mysqlmp传递参数no-data,如下所示:%>mysqlmp -u root -p no-data wiki > wiki-backup092210.sql
为了只备份数据库的数据,可以向mysqlmp使用参数no-create-info,如下所示:%>mysqlmp -u root -p no-create-info wiki > wiki-backup092210.sql
对于前面所举的例子,仅需要少量的击键次数就能执行mysqlmp命令。然而,工作中要干的活还有很多,并且如果老是执行这些命令的话,那么生活就会变得太单调了。因此,我们可以设法使这些过程自动化,这时我们可以借助cron工具来达成我们的目标,这个工具在所有类UNIX操作系统上都能找到。为了自动执行备份任务,我们需要新建一个正确命名的文件。例如nightly-backup.sh,具体命令如下所示:#!/bin/sh mysqlmp -uroot -psecret wiki > /home/backup/sql/wiki-backup-`date +%m%d%Y`.sql
接下来,我们将这个脚本提供交给cron,方法是使用crontab。为此,我们可以执行如下所示的命令:%>crontab -e
这将打开当前登录用户的crontab文件,如果该文件不存在的话就会自动新建一个。在这个文件中,我们可以添加如下内容,来确保每天上午3时运行该备份脚本:0 3 * * * /home/backup/scripts/nightly-backup.sh
如果您对crontab的语法很陌生的话,这里的参数可能让您摸不着头脑。这里前五个参数分别对应于执行脚本的时间,依次为分、时、日、月和星期几。因此,要想在每星期二的4:45am执行脚本的话,可以使用参数45 4 * * 3。
插入上面所示的一行内容后,保存文件,那么我们的任务就会开始按照给定时间调度执行。 需要注意的是,第二天早上一定要查看相应的目录,看看事情是否一切正常。
五、其它备份方案
就像本文前面所说的那样,mysqlmp只是MySQL众多备份方案中的一个。此外,您还可以使用MySQL的二进制日志文件进行增量备份,或者使用从MySQL主服务器中将数据复制到从服务器中。
六、小结本文中,我们与读者一道建立了一个简单的MySQL备份解决方案。如果您之前还未实施任何解决方案的话,不妨立即动手试一下。重要的是,这只需要花费您几分钟的时间,我想这是很划得来的。

F. mysqlmp 怎么导入数据库

mysqlmp是用来做备份数据库的;
有两种方法可导入数据库(表)

(1)导入数据库
在本地数据库中创建相对应导出的数据库mydb同名的数据库:
mysql> create database mydb;
然后退出数据库,再使用以下的 命令导入数据库文件mydb.bak到本地数据库mydb中:
mysql -uroot -p123456 mydb < /root/data/mydb.bak;
或者进入mysql中,使用source指令完成数据库导入,如下:
mysql> source /root/data/mydb.bak; // /root/data/mydb.bak是远程数据库mydb导出文件的本地存放位置
(2)导入数据表
在本地数据库中创建相对应导出的数据库mydb同名的数据库:
mysql> create database mydb;
然后在mysql中使用source指令来完成数据表的导入,如下:
mysql> source /root/data/tb1.bak; // /root/data/tb1.bak是远程数据表tb1导出文件的本地存放位置

G. 怎么实现热机同步自动备份数据库

B)上,并且删除早于当前日期3 天的数据,或者是进行差异或增量备份,B 机
器没有安装SQL 只是共享目录,(需要注意的是,我不打算将库文件备份到本
机A,而是直接备份到B,数据库庞大,A 的空间有限),本人对SQL 了解甚
少,如能写出详细步骤,及用到的语句,达到我的目的。
一个双机备份的实例:
1.为数据库服务器(如服务器名为DbaseServ)中的数据库建立定期备份作业,这
个你应该会。
2.将数据服务器存放数据库备文份件的文件夹置成共享。
3.在另外一台机器(目标机)上写一个批处理文件(打开记事本,按下面格式录
入DOS 命令,保存为DBBACKUP.BAT。
格式:x \\数据服务器名\数据服务器共享的备份文件文件夹\库名.* 本机硬盘\*.*/m举例:XCOPY \\DbaseServ\backupdata\employee.* d:\databackup\*.* /m
如果备份文件夹映射了网络驱动器(如F:,数据库备份文件是employee),并且本
机不作保留,就这样:
XCOPY F:\employee.* d:\databackup\*.* /m
DEL /Q /A:A F:\EMPLOYEE.*
4.在该目标机器上建立“任务计划”(点控制面板,添加任务计划,通过浏览选
择建立的那个批文件(如DBBACKUP.BAT),设置周期及备份时间(要与服务器
上的数据备份作业大致错后一点(如一小时)。
这样,系统就会在每次数据服务器数据库备份后,自动将无存档标记的文件备份
到目标机,并将备份成功的文件加入存档标记,保证下次不重复备份。
未成功备份的当然不删除,下将还要再试着备份。
打开SQL2000 企业管理器. 下面有个数据维护计划. (根据里面的提示一步一
步按照自己的要求进行设置就行了。)
在上面点右键,新建维护计划,里面按你的要求设置就行了。(这里选择你需要备

H. 如何设置MySQL同步

MySQL 提供了数据库的同步功能,这对我们实现数据库的冗灾、备份、恢复、负载均衡等都是有极大帮助的。本文描述了常见的同步设置方法。
一、准备服务器
由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。
本文中,我们假设主服务器(以下简称Master)和从服务器(以下简称Slave)的版本都是5.0.15,操作系统是Linux Ubuntu 5.0.x。
假设同步Master的主机名为:rep1,Slave主机名为:rep2,2个MySQL的basedir目录都是/usr/local/mysql,datadir都是:/usr/local/mysql/data。
二、设置同步服务器
1、设置同步Master
每个同步服务器都必须设定一个唯一的编号,否则同步就不能正常运行了。接下来开始修改 my.cnf,增加以下几行:
server-id = 1
log-bin
set-variable=binlog-ignore-db=mysql

然后在Master上增加一个账号专门用于同步,如下:
mysql>GRANT REPLICATION SLAVE ON *.* TO rep@rep2 IDENTIFIED BY 'rep';

如果想要在Slave上有权限执行 "LOAD TABLE FROM MASTER" 或 "LOAD DATA FROM MASTER" 语句的话,必须授予全局的 FILE 和 SELECT 权限:
mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO rep@rep2 IDENTIFIED BY 'rep';

第三行表示不记录数据库mysql的更新日志,这就避免了Master上的权限设置等被同步到Slave上,如果对这方面没有限制,就可以不设置这个参数。
接下来备份Master上的数据,首先执行如下SQL语句:
mysql>FLUSH TABLES WITH READ LOCK;

不要退出这个终端,否则这个锁就不生效了;接着导出数据,可以直接打包压缩数据文件,也可以使用mysqlmp工具来做,推荐前者的方法,这样更为快捷简便。
root$cd /usr/local/mysql
root$tar zcf data.tar.gz ./data (在这里也可能是 "var" 等其它实际存放数据文件的目录,根据实情而定)

然后将这些数据拷贝到Slave服务器上,解开,设置好正确的权限及属主等;之后,执行 "UNLOCK TABLES" 语句来释放锁。
2、设置Slave
修改my.cnf,增加如下几行:
server-id = 2
master-host = rep1 #主服务器名
master-user = rep #同步账户名,默认是test
master-password = rep #同步帐户密码,默认是空
master-port = 3306 #主服务器的 TCP/IP 端口号,默认是3306
set-variable=replicate-ignore-db=mysql #略过同步的数据库名,如果有多个,请设置多次
set-variable=replicate-do-db=yejr #想要同步的数据库名,如果有多个,请设置多次

接下来在Slave上检验一下是否能正确连接到Master上,并且具备相应的权限。
root$mysql -hrep1 -urep -prep
mysql>SHOW GRANTS;
+------------------------------------------------------------------------------+
| Grants for rep@rep2 |
+------------------------------------------------------------------------------+
| GRANT SELECT, FILE, REPLICATION SLAVE ON *.* TO 'rep'@'rep2' IDENTIFIED BY
PASSWORD '*' |
+------------------------------------------------------------------------------+

现在,可以启动Slave了。启动成功后,登录Slave,查看一下同步状态:
mysql -hlocalhost -uroot
mysql>SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: rep1
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000001
Read_Master_Log_Pos: 98
Relay_Log_File: relay.000003
Relay_Log_Pos: 232
Relay_Master_Log_File: binlog.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 232
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)

可以看到,Slave_IO_Running 和 Slave_SQL_Running 两列的值都为 "Yes",这表明 Slave 的 I/O 和 SQL 线程都在正常运行。
至此,同步设定成功。
三、同步设定FAQ