【问题标题】:MySQL Lock Database on Slave从属服务器上的 MySQL 锁定数据库
【发布时间】:2015-02-13 06:11:17
【问题描述】:

我正在做数据复制。我有一台主服务器和一台从服务器,并且我的数据已成功从主服务器复制到从服务器。现在我想锁定我的从服务器数据库进行写入。

我使用了LOCKED TABLE mytable READ,它成功地将我的表锁定在从属设备上,例如“myIns1”。但是当我使用其他实例打开 MySQL 并尝试在同一个数据库上写入时,它很容易写入,有时也会挂起。我希望我的从服务器数据库对所有 MYSQL 实例和用户完全锁定。 请帮忙。

【问题讨论】:

    标签: mysql replication mysql-workbench database-replication mysql-5.6


    【解决方案1】:

    您可以在从站中使用 只读 选项。这可以防止没有 SUPER 权限的用户更新数据库。查看here了解更多信息:

    使从属不允许除从属线程或具有超级权限的用户之外的更新。在从属服务器上,这有助于确保从属服务器仅接受来自其主服务器而不是来自客户端的更新。此变量不适用于 TEMPORARY 表。

    【讨论】:

    • 可以在my.cnf中设置。
    • my.cnf 在哪里?请你写行或代码。谢谢。
    • 你可以在文件中写read-only = 1。如果您使用的是 Linux,my.cnf 通常位于/etc/mysql/my.cnf,否则在 Windows 中它位于数据目录中。您可以查看 Windows 服务使用的命令行以了解确切位置。此外,在 Windows 中,它通常称为 my.ini 而不是 my.cnf
    • 好的,我也可以使用use mydb; flush tables with read lock;。它也做同样的事情吗??
    【解决方案2】:

    您使用的是哪个版本?而且 MySQL Replication 可以选择只复制特定的数据库,配置它。

    其他选项删除不需要的数据库的访问权限,但当不需要的数据库在 master 中有任何更改时,它会显示错误。它将写入binlog并发送到从服务器。

    【讨论】:

    • 我正在使用 mysql 5.6,是的,我正在复制特定数据库,即“mydb”并对其进行配置。我只想在从服务器上锁定“mydb”,以供所有实例和从属用户写入??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    相关资源
    最近更新 更多