MySQL 导入在 Mac 上的 Vagrant CoreOS 框上挂起

MySQL import hangs on Vagrant CoreOS box on Mac

我有一个使用以下内容的本地开发设置:

它设置为使用 NFS 将本地开发目录 ~/Sites 同步到 Vagrant box,因为我的工作目录以及 MySQL 目录都位于此处(~/Sites/.coreos-databases/mysql).从我读到的内容来看,这不是最好的设置类型,但它已经为我和其他工作人员工作了很长一段时间。

最近我无法将任何数据库转储导入到此设置中。导入过程开始并在大约一半的过程中挂起。它发生在命令行以及 Sequel Pro 上。它确实导入了一些表格,但每次都完全冻结在同一个位置。转储的大小似乎无关紧要——我一直在尝试的那个只有 104Kb。其他人在 100MB 以上的转储中遇到了同样的问题 - 在大约一半的同一地点冻结。

我的流浪文件:

Vagrant.configure("2") do |config|

# Define the CoreOS box
config.vm.box = "coreos-alpha"
config.vm.box_url = "http://alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json"

# Define a static IP
config.vm.network "private_network",
    ip: "33.33.33.77"

# Share the current folder via NFS
config.vm.synced_folder ".", "/home/core/sites",
    id: "core",
    :nfs => true,
    :mount_options => ['nolock,vers=3,udp,noatime']

# Provision docker with shell
# config.vm.provision
config.vm.provision "shell",
    path: ".coreos-devenv/scripts/provision-docker.sh"

end

Docker文件 mysql:

# Start with Ubuntu base
FROM ubuntu:12.10


# Install some basics
RUN apt-get update

# Install mysql
RUN apt-get install -y mysql-server

# Clean up after install
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Add a grants file to set up remote user
# and disbale the root user's remote access.
ADD grants.sql /etc/mysql/

# Add a conf file for correcting "listen"
ADD listen.cnf /etc/mysql/conf.d/

# Run mysqld on standard port
EXPOSE 3306

ENTRYPOINT ["/usr/sbin/mysqld"]
CMD ["--init-file=/etc/mysql/grants.sql"]

我在 'vagrant ssh' 和 运行 dmesg 中,这是它冻结后吐出的内容:

[  465.504357] nfs: server 33.33.33.1 not responding, still trying
[  600.091356] INFO: task mysqld:1501 blocked for more than 120 seconds.
[  600.092388]       Not tainted 4.0.3 #2
[  600.093277] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  600.094442] mysqld          D ffff880019dbfbc8     0  1501    939 0x00000000
[  600.095953]  ffff880019dbfbc8 ffffffff81a154c0 ffff88001ec61910 ffff880019dbfba8
[  600.098871]  ffff880019dbffd8 0000000000000000 7fffffffffffffff 0000000000000002
[  600.101594]  ffffffff8150b4e0 ffff880019dbfbe8 ffffffff8150ad57 ffff88001ed5eb18
[  600.103794] Call Trace:
[  600.104376]  [<ffffffff8150b4e0>] ? bit_wait+0x50/0x50
[  600.105934]  [<ffffffff8150ad57>] schedule+0x37/0x90
[  600.107505]  [<ffffffff8150da7c>] schedule_timeout+0x20c/0x280
[  600.108369]  [<ffffffff8101d799>] ? read_tsc+0x9/0x10
[  600.109370]  [<ffffffff810d731e>] ? ktime_get+0x3e/0xa0
[  600.110353]  [<ffffffff8101d799>] ? read_tsc+0x9/0x10
[  600.111327]  [<ffffffff810d731e>] ? ktime_get+0x3e/0xa0
[  600.112347]  [<ffffffff8150a31c>] io_schedule_timeout+0xac/0x130
[  600.113368]  [<ffffffff810a9ee7>] ? prepare_to_wait+0x57/0x90
[  600.114358]  [<ffffffff8150b516>] bit_wait_io+0x36/0x50
[  600.115332]  [<ffffffff8150b145>] __wait_on_bit+0x65/0x90
[  600.116343]  [<ffffffff81146072>] wait_on_page_bit+0xc2/0xd0
[  600.117453]  [<ffffffff810aa360>] ? autoremove_wake_function+0x40/0x40
[  600.119304]  [<ffffffff81146179>] filemap_fdatawait_range+0xf9/0x190
[  600.120646]  [<ffffffff81152ffe>] ? do_writepages+0x1e/0x40
[  600.121346]  [<ffffffff81147f96>] ? __filemap_fdatawrite_range+0x56/0x70
[  600.122397]  [<ffffffff811480bf>] filemap_write_and_wait_range+0x3f/0x70
[  600.123460]  [<ffffffffa0207b1e>] nfs_file_fsync_commit+0x23e/0x3c0 [nfs]
[  600.124399]  [<ffffffff811e7bf0>] vfs_fsync_range+0x40/0xb0
[  600.126163]  [<ffffffff811e7cbd>] do_fsync+0x3d/0x70
[  600.127092]  [<ffffffff811e7f50>] SyS_fsync+0x10/0x20
[  600.128086]  [<ffffffff8150f089>] system_call_fastpath+0x12/0x17

有什么想法吗?

我也在使用同样的设置。 Vagrant 默认为 UDP,因此从您的设置中删除它似乎可行。虽然还没有测试过,但我没有 运行 进入你遇到的 MYSQL 问题。

config.vm.synced_folder ".", "/home/core/sites",
    id: "core",
    nfs_version: "4",
    :nfs => true,
    :mount_options => ['nolock,noatime']

这对我有用。 YMMV.