【发布时间】:2014-02-11 10:31:05
【问题描述】:
我的数据库中有一个很大的表,我想备份并复制到另一个从服务器。
我认为最好的方法是将该表的数据导出到 csv 文件并通过命令 sqlimport 将其导入从服务器(它比 mysql 运行得更快)
所以我的问题是如何在数据库运行时将表的数据导出到 csv 文件? 是否可以在使用 mysqldump 时激活选项 --single-transaction ?
提前谢谢你。
【问题讨论】:
我的数据库中有一个很大的表,我想备份并复制到另一个从服务器。
我认为最好的方法是将该表的数据导出到 csv 文件并通过命令 sqlimport 将其导入从服务器(它比 mysql 运行得更快)
所以我的问题是如何在数据库运行时将表的数据导出到 csv 文件? 是否可以在使用 mysqldump 时激活选项 --single-transaction ?
提前谢谢你。
【问题讨论】:
这是我如何转储表格并导出到 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。
踌躇满志
【讨论】:
在您的从属主机上创建表。
从从服务器上的 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:
服务器 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 . TOrelicant@slavehost/ip:port IDENTIFIED BY 'pass';
2.-将Mysql数据库备份到backupserver.create the backup file with the binlog 位置。
# nohup mysqldump -uroot -p --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=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
服务器 ID = 10
binlog-format = 混合
log_bin = mysql-bin
relay-log = mysql-relay-bin
log-slave-updates = 1
只读 = 1
5.- 将备份恢复到从服务器:
方案 1:压缩转储文件 gzip dump_DBNAME .sql 并通过 FTP 传输或作为电子邮件发送。
然后从从服务器恢复备份
#gunzip dump_DBNAME .sql.gz
# mysqldump -hORIGINALHOST -uUSERNAME -p 方案二:直接从主服务器备份到从服务器 # nohup mysql –mysqldump -hslavehost -uUSERNAME -p dump_DBNAME .sql
6.-配置从服务器 编辑/etc/mysql/my.cnf 服务器 ID = 10 binlog-format = 混合 log_bin = mysql-bin relay-log = mysql-relay-bin log-slave-updates = 1 只读 = 1 启动从服务器 CHANGE MASTER TO 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.- 启动并查看从站的状态 启动奴隶; 显示从属状态\G 此时我们在Slave Server中有一个Original server的副本
【讨论】: