我正在尝试为大型(120 GB)MySQL 数据库设置复制,但我搞砸了。
我关闭了 master,复制了数据文件,然后重新启动了 master。现在我已经设置了奴隶并启动了它,我意识到我忽略了获取MASTER_LOG_FILE
和MASTER_LOG_POS
设置复制所需值。
我仍然有一份未受影响的数据文件副本。有没有办法从这些文件中确定MASTER_LOG_FILE
和MASTER_LOG_POS
?
相关问题:
MASTER_LOG_POS
为较早的时间点?编辑
我一直在调查该mysqlbinlog
命令,并通过执行以下命令发现了正确的信息:
mysqlbinlog --to-last-log --start-datetime='2015-06-21 20:05:00'
mysql-bin.000006 | grep end_log_pos
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
... a whole bunch more lines ...
#150621 20:10:21 server id 1 end_log_pos 720159843 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720161877 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720162762 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:22 server id 1 end_log_pos 720164796 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在两个 docker 容器之间设置复制,它们都运行库存的MariaDB 10.3.4 图像(这是目前的最新版本)。当我开始了集装箱,我得到表错误代码1062(重复键)mysql.user
的关键localhost-root
。从站显然试图mysql.user
从主站复制表并失败,因为他们都有root@localhost
用户。这似乎与 Docker 无关 - 我想从头开始设置任何主/从对时会出现同样的问题。
如何设置从属设备来复制所有内容?我从头开始,所以我希望奴隶成为(或多或少)主人的完美副本。
这是设置:
我正在从docker-compose.yml
文件运行容器:
version: '2'
volumes:
dbdata:
external: false
services:
# the MariaDB database MASTER container
#
database:
image: mariadb:10.3.4
env_file:
- ./env/.env.database
volumes:
- dbdata:/data/db
- /etc/localtime:/etc/localtime:ro
# mount the configuration files in the approriate place
#
- ./database/master/etc/mysql/conf.d:/etc/mysql/conf.d:ro
# mount the SQL files for initialization in a place where the
# database container will look …
Run Code Online (Sandbox Code Playgroud)