我知道如何使用 mysqldump 导出/导入数据库,这很好,但我如何将权限授予新服务器。
额外的一点是,新数据库上已经有几个现有数据库,如何导入旧服务器权限而不破坏现有的几个数据库。
旧服务器:5.0.67-社区
新服务器:5.0.51a-24+lenny1
编辑:我从旧服务器上获得了 db 'mysql' 的转储,现在想知道与新服务器上的 'mysql' db 合并的正确方法。
我尝试使用 phpMyAdmin 直接“导入”,结果出现了关于重复的错误(我已经手动迁移过)。
任何人都有合并两个“mysql”数据库的优雅方式?
mysql linux debian mysql-replication database-administration
我正在将 2 个数据库服务器(主和从)迁移到两个新的数据库服务器(主和从)
DB1 - 主(生产)
DB2 - 从(生产)
DB3 - 新主
DB4 - 新从
目前我将复制设置为:
DB1 -> DB2
DB3 -> DB4
Run Code Online (Sandbox Code Playgroud)
为了将生产数据复制到新服务器,我想将它“菊花链”,使其看起来像这样:
DB1 -> DB2 -> DB3 -> DB4
Run Code Online (Sandbox Code Playgroud)
这可能吗?当我show master status;在 DB2(生产从站)上运行时,binlog 位置似乎永远不会改变:
+-----------------+----------+--------------+---- --------------+ | 档案 | 职位 | Binlog_Do_DB | Binlog_Ignore_DB | +-----------------+----------+--------------+---- --------------+ | mysql-bin.000020 | 98 | | | +-----------------+----------+--------------+---- --------------+
我有点困惑为什么 DB2 上的 binlog 位置没有改变,理想情况下它将成为 DB3 的主控。
背景:按照这个优秀的指南,我在 Master-Master 基于行的复制 (RBR) 中设置了两个 MySQL 5.1 服务器。我希望复制所有数据库,并将定期添加新数据库。
目标:我希望能够通过将数据库添加到其中一台服务器来将新数据库添加到复制中; 无需停止两个从站,更改配置文件,重新启动 MySQL 服务器,然后再次启动从站。
问:从我读过,我想我可以通过简单的漏报任何一个做到这一点binlog-do-db,binlog-ignore-db,replicate-do-db,并replicate-ignore-db在每个服务器的配置设置,但我不能肯定。MySQL 的关于如何评估数据库级和表级复制选项的文档让我认为可能根本没有办法做到这一点。
我的/etc/mysql/my.cnf文件的相关部分复制如下。我在正确的轨道上吗?我想要的甚至可能吗?
大师 1 :
[mysqld]
binlog-format = row
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host = <master2_ip>
master-user = slave_user
master-password = <password>
master-connect-retry = 60
log-bin = /var/log/mysql/mysql-bin.log
relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index
expire_logs_days = 14 …Run Code Online (Sandbox Code Playgroud) 当我最初设置主到主复制时,我使用了:
binlog-ignore-db=mysql
Run Code Online (Sandbox Code Playgroud)
并且一直在手动同步用户帐户和授权。这就是我当时使用的操作指南中的做法。但是有什么理由我不应该删除这一行并允许mysql数据库本身也进行复制?
如果是这样:在我进行更改之前,除了确保两者的所有授权都相同(或者更好地说明,整个 mysql 数据库是相同的)之外,还有什么我应该仔细检查或注意的吗?
我们有一些 MySQL 数据库服务器设置了基于行的复制,以提高性能。软件写入主机,并从主机或从机读取。在大多数情况下,一切都很好。
我的理解是 MySQL 将允许写入从站,即使它知道它是一个 MySQL 从站。理想情况下,我想关闭它,因此即使有人编写了一些错误的代码来获取读取连接并执行UPDATE,它也会抛出错误而不是将数据放在从属设备上。
有没有办法在 MySQL 中做到这一点?显然,我们也希望通过我们的软件使这成为不可能,但是就像我们服务器上的防火墙一样,我希望尽可能地防御。
谢谢!
主节点的快照是通过以下方式创建的:
mysql> FLUSH TABLES WITH READ LOCK;
shell> mysqldump --all-databases --master-data > dbname_`date +%F`.sql
Run Code Online (Sandbox Code Playgroud)
这个转储文件被导入到从站(用--skip-slave-start选项启动)没有错误:
shell> pv dbname_`date +%F`.sql | mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
但是在执行时出现以下错误mysql> start slave;:
Last_SQL_Errno: 1062
Last_SQL_Error: Error 'Duplicate entry '115846' for key
'PRIMARY'' on query. Default database: 'db'. Query: 'INSERT INTO
request_posted (id, user_id, channel, message, link, picture, name, ...
Run Code Online (Sandbox Code Playgroud)
master上只有一条ID为115846的记录:
mysql> select count(*) from request_posted where id=115846;
Current database: db
+----------+
| count(*) |
+----------+
| 1 …Run Code Online (Sandbox Code Playgroud) 基本上,我们有一个大型 MySQL 数据库,我们希望复制到从站(主从设置)。你们有关于如何在数据库停机时间最短的情况下做到这一点的分步指南吗?备份数据库并将备份传输到从服务器(甚至通过专用网络)大约需要 40 分钟。相当长的停机时间。
我的组织一直在研究如何在地理上分布我们的服务器,同时保持备份非常最新,并在理想情况下分散负载。
我首先想到的是 MySQL 上的 Rails。写入速率不太高(文章/评论每分钟不到 1 条,尽管有些有大媒体附件)。
所以,
我的从数据库 (MySQL 5.7.12) 上的复制突然停止工作。当我运行时,SHOW SLAVE STATUS\G我看到以下错误:
Last_Errno: 1396
Last_Error: Error 'Operation CREATE USER failed for 'user'@'ip'' on query. Default database: ''. Query: 'CREATE USER 'user'@'ip' IDENTIFIED WITH 'mysql_native_password' AS '*password''
Run Code Online (Sandbox Code Playgroud)
我最近在我的主人和我的奴隶上创建了 2 个新的只读用户,所以我确定这是因为这个。
我也在状态中看到了这一点:
Slave_IO_Running: Yes
Slave_SQL_Running: No
Run Code Online (Sandbox Code Playgroud)
对于如何解决这个问题,有任何的建议吗?
谢谢你。