我的数据库中有一个非常大的表,我想备份并复制到另一个从服务器。
我认为最好方法是将表的数据导出到csv文件,然后通过sqlimport命令将这些数据导入到从服务器(它的运行速度比mysql快)
所以我的问题是,当数据库正在运行时,我如何将表的数据导出到csv文件?是否可以使用mysqldump激活选项--single-transaction?
提前谢谢你。
发布于 2014-02-11 18:59:40
下面是一个转储表并将其导出为csv的示例:
select * from product where datecreated between '2013-08-01' and '2013-11-11' order by datecreated desc INTO OUTFILE '/tmp/xmas2.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';然后导航到您的tmp目录并打开csv。
沃特罗尼
发布于 2014-02-12 10:48:03
在您的从属主机上创建表。
从您的从属服务器上的shell:
#nohup mysqldump -h“主服务器的ip或主机”-uuser -p "DB_NAME“"TABLE_NAME”| mysql -user=user-password=password "name_of_your_database“&
如果您正在尝试主从复制。
1.-将生产服务器配置为主服务器
A)在mysqld节上编辑/etc/mysql/my.cnf:
server-id=1
binlog-format =混合
log-bin=mysql-bin
datadir=/var/lib/mysql
innodb_flush_log_at_trx_commit=1
sync_binlog=1
B)重启服务器
C)创建用户replicant@slavehost/ip:port;
GRANT REPLICATION SLAVE ON。到replicant@slavehost/ip:由‘pass’标识的端口;
2.-将Mysql数据库备份到binlog位置的备份文件backupserver.create中。
nohup mysqldump主数据表--跳过-锁-表--单事务--刷新-日志--十六进制-uroot - -p =2 -A > dump_DBNAME .sql
3.-保存MASTER_LOG_FILE和MASTER_LOG_POS
#head dump_DBNAME .sql | grep "MASTER_LOG_FILE“> MASTER_LOG_FILE_DBNAME .sql
#head dump_DBNAME .sql | grep "MASTER_LOG_POS“> MASTER_LOG_POS_DBNAME .sql
4.-配置从服务器
编辑/etc/mysql/my.cnf
server-id = 10
binlog-format =混合
log_bin = mysql-bin
relay-log = mysql-relay-bin
日志-从属-更新=1
只读=1
5.-将备份恢复到备机:
选项1:压缩de dump文件gzip dump_DBNAME .sql并使用FTP传输或通过电子邮件发送。
然后从从属服务器恢复备份
#gunzip dump_DBNAME .sql.gz
mysqldump -hORIGINALHOST -uUSERNAME -p < dump_DBNAME .sql
选项2:从主服务器直接备份到从服务器
nohup mysql -mysqldump -hslavehost -uUSERNAME -p dump_DBNAME .sql < dump_DBNAME .sql &
6.-配置从服务器
编辑/etc/mysql/my.cnf
server-id = 10
binlog-format =混合
log_bin = mysql-bin
relay-log = mysql-relay-bin
日志-从属-更新=1
只读=1
启动从服务器
修改MASTER为MASTER_HOST='master-server-ip',MASTER_USER='replicant',MASTER_PASSWORD='slave-server-password',MASTER_ log _FILE='value log file',MASTER_LOG_POS='value log pos';
10.-启动并查看从机的状态
启动SLAVE;
显示从属状态\G
此时,我们在Slave server中拥有原始服务器的副本
https://stackoverflow.com/questions/21699291
复制相似问题