AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 12713
Accepted
com
com
Asked: 2012-02-13 02:38:46 +0800 CST2012-02-13 02:38:46 +0800 CST 2012-02-13 02:38:46 +0800 CST

Mysql 复制自动化脚本

  • 772

我正在寻找可以帮助我们创建大量连接到指定主服务器的 mysql 从服务器的东西,比如说批量复制。

如果为此目的有任何现有的解决方案。在简单的情况下,它可以只是 bash 脚本,它锁定主数据库,将表文件复制到新的从属数据库,恢复位置并开始复制。

据您所知,是否存在上述内容?

mysql replication
  • 3 3 个回答
  • 6128 Views

3 个回答

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2012-04-14T11:11:46+08:002012-04-14T11:11:46+08:00

    我想提出一些激进的建议。我从星际迷航中得到了这个想法:深空 9(号召性用语)

    在虫洞周围设置了一个雷区,以防止自治同盟军和杰姆哈达尔通过。每个爆炸地雷都配备了一个复制器,可以让一个地雷在爆炸后重新制造另一个地雷。因此,雷区无限期地停留。

    通过 DS9 类比,我为您带来了一个有趣的想法。

    您设置了 2 个初始读取从属,其中 MySQL 从属禁用了 innodb

    [mysqld]
    skip-innodb
    

    这是可选的。我的偏好是使用全 MyISAM 从属设备进行读取,因为对于小型数据集,它的读取速度比 InnoDB 快。如果您选择使用 InnoDB,请确保放松 ACID 合规性

    [mysqld]
    innodb_flush_log_at_trx_commit = 0
    

    如果发生崩溃,只需摧毁奴隶并启动一个新的

    我们称奴隶为 S0 和 S1

    这是别的东西:在 S0 的 /etc/my.cnf 中有这个

    [mysqld]
    innodb_max_dirty_pages_pct = 0;
    innodb_fast_shutdown = 0
    

    这些将帮助 S0 通过完全刷新的数据快速关闭。

    以下是您必须在复制器进程中编写的脚本

    当你需要生成一个新的slave时(我们称之为S2),这里是你必须做的

    步骤 01) 在 S0 上,运行service mysql stop

    STEP 02) 将与 S0 相同版本的 MySQL 安装到 S2

    步骤 03) 在 S0 上,scp /etc/my.cnf S2:/etc/.

    STEP 04) 在 S2 上,您需要将server-idS2 中的 /etc/my.cnf 更改为唯一值(建议:使用 S2 的私有 IP 的第 2、3 和第 4 个八位字节[不带点])

    innodb_max_dirty_pages_pct = 0步骤 05) 在 S2 上,从 /etc/my.cnf中删除或注释掉

    步骤 06) 在 S0 上,运行rsync -av /var/lib/mysql S2:/var/lib/mysql(注意:如果您必须启动 5 个从站,此时运行 5 个 rsync)

    步骤 07) 在 S2 上,service mysql start(MySQL 复制在 S0 停止的地方立即开始)

    步骤 08) 在 S0 上,运行service mysql start

    创建复制器脚本后,您可以使用它在新的 Slave 上启动 MySQL。

    同时,S1 可用于 SELECT 查询并继续复制。

    S0 用于重新创建一个新的 Slave。

    如果您在启动 Amazon EC2 或其他一些云数据库服务器的同时执行此操作,请与您的系统管理员核实任何允许您启动数据库服务器的 Linux 命令/API。然后,将复制器应用到新生成的 DB Server。更好的是,您可以将 Db Server 创建 API 合并到您的复制器脚本中。

    警告

    如果您必须启动数十或数百个从站,您只需拥有 10 台 Replicator 从站服务器 (S0 - S9) 并在不同的 Replicator 从站上拥有 10 个复制器脚本操作符副本。

    • 1
  2. Nicomak
    2016-06-16T06:48:01+08:002016-06-16T06:48:01+08:00

    我写了这篇博文,解释了如何创建 bash 脚本来自动化 MySQL 上的主从复制:

    http://blog.ditullio.fr/2016/04/30/initialize-mysql-master-slave-replication-script/

    它提供了一个 shell 脚本(见文章末尾),您只需在其中输入变量:

    • 主主机名或 IP
    • 从属主机名或 IP 的数组
    • 数据库名称

    然后它会自动开始在这些从属上复制主控。

    它针对大量从属服务器进行了优化,因为它只锁定和导出主转储和日志位置一次。然后它将转储文件分发给所有从属并在每个从属上初始化复制。

    • 1
  3. Brian Papantonio
    2012-02-13T21:52:38+08:002012-02-13T21:52:38+08:00

    是的,它叫做mysqldump:

    http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

    您可以使用它将数据复制到从属服务器并在一个命令中开始复制。这一切都在那里。

    另见:

    http://dev.mysql.com/doc/refman/5.1/en/replication-howto-existingdata.html

    • 0

相关问题

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve