【发布时间】:2014-05-27 20:25:37
【问题描述】:
我有一个带 2 个节点的 mariadb galera,当我在 db1 中创建用户时,这不会复制 en db2,但是如果我在 db1 中创建一个 db,它会在 db2 中复制!!!! mysql.user 复制有什么想法吗?
【问题讨论】:
我有一个带 2 个节点的 mariadb galera,当我在 db1 中创建用户时,这不会复制 en db2,但是如果我在 db1 中创建一个 db,它会在 db2 中复制!!!! mysql.user 复制有什么想法吗?
【问题讨论】:
Galera 仅复制 DDL(数据定义语言)和 innodb-DML(数据操作语言)。
如果你通过“insert into mysql.user ....”创建用户,它是 myissam-DML --> NOT REPLICATED
如果你通过“create user ....”创建用户,它是 DDL --> 复制的。
【讨论】:
默认情况下MariaDB数据库mysql然后mysql.user是MyISAM,
更改InnoDB 上的所有表格证明这一点:
mysqldump -uroot -p --no-data -R --triggers mydb > mydb_schema.sql
然后转储出数据:
mysqldump -uroot -p --no-create-info -R --triggers mydb > mydb_data.sql
更改存储引擎
sed -i.bak 's#MyISAM#innodb#g' mydb_schema.sql
导入 mydb_schema
mysql -u root -p < mydb_schema.sql
最后是数据。
【讨论】:
您确定,您正在使用创建用户/授予所有权限语句创建用户吗? Galera 旨在完美地在 InnoDB 上运行,但是 mysql 数据库中的表(如用户表)在 MyISAM 中,这可能会导致愚蠢的错误。
【讨论】: