【问题标题】:MYSQLDUMP to CSV file with option --single-transactionMYSQLDUMP 到 CSV 文件,带有选项 --single-transaction
【发布时间】:2014-02-11 10:31:05
【问题描述】:

我的数据库中有一个很大的表,我想备份并复制到另一个从服务器。

我认为最好的方法是将该表的数据导出到 csv 文件并通过命令 sqlimport 将其导入从服务器(它比 mysql 运行得更快)

所以我的问题是如何在数据库运行时将表的数据导出到 csv 文件? 是否可以在使用 mysqldump 时激活选项 --single-transaction ?

提前谢谢你。

【问题讨论】:

    标签: mysql mysqldump


    【解决方案1】:

    这是我如何转储表格并导出到 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。

    踌躇满志

    【讨论】:

      【解决方案2】:

      在您的从属主机上创建表。

      从从服务器上的 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的副本

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多