Không thể giải quyết địa chỉ IP của MySQL [Cảnh báo]


27

Tôi đang chạy MySQL5.6.3 trên máy ảo CentOS 6.1 chạy trên Windows XP trong VirtualBox .

Card mạng được cấu hình ở chế độ cầu, vì vậy các máy vật lý & ảo của tôi có chung thẻ ethernet.

Trên máy ảo, mọi thứ đều hoạt động tốt: truy cập internet, tra cứu DNS. Tuy nhiên, các kết nối đến daemon MySQL mất một lúc và nhật ký tiếp tục hiển thị cảnh báo này:

[Cảnh báo] Không thể giải quyết địa chỉ IP '192.168.1.201': Lỗi tạm thời trong phân giải tên

192.168.1.201 là máy chủ lưu trữ mà tôi đang chạy ứng dụng khách MySQL.

Có vẻ như mặc dù tra cứu DNS hoạt động tốt, nhưng tra cứu DNS ngược lại kết thúc trong thời gian chờ.

Đây là cấu hình máy ảo:

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="08:00:27:4B:3D:7C"
NM_CONTROLLED="yes"
ONBOOT="yes"
NETMASK=255.255.255.0
IPADDR=192.168.1.200
GATEWAY=192.168.1.1
PEERDNS=yes

# cat /etc/resolv.conf
nameserver 192.168.1.1

Có cái gì đó sai trong cấu hình mạng của tôi?


tham khảo câu trả lời khác của tôi cho câu hỏi này: serverfault.com/a/778161/96578
Amin Sh

Câu trả lời:


49

IMHO Điều này có vẻ như bạn cần mysqld để ngừng sử dụng DNS.

Vui lòng làm như sau: Thêm phần này vào /etc/my.cnf

[mysqld]
skip-host-cache
skip-name-resolve

Họ khởi động lại mysql. Từ đó trở đi, mysql sẽ không còn giải quyết địa chỉ qua DNS.

Hãy thử một lần !!!

CẨN THẬN

Vui lòng đọc các tùy chọn này trong Tài liệu MySQL:

Ngoài ra, có một hạn chế đối với việc sử dụng này: Bạn không thể sử dụng tên DNS trong cột máy chủ của bất kỳ bảng cấp nào.

CẬP NHẬT 2012-12-17 08:37 EDT

Gần đây tôi đã được hỏi nếu skip-host-cacheskip-name-resolvecó thể được thiết lập mà không cần khởi động lại mysql. Hãy cùng tìm hiểu:

mysql> show variables like '%host%';
+---------------+--------------+
| Variable_name | Value        |
+---------------+--------------+
| hostname      | ************ |
| report_host   |              |
+---------------+--------------+
2 rows in set (0.00 sec)

mysql> show variables like 'skip_%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| skip_external_locking | ON    |
| skip_name_resolve     | OFF   |
| skip_networking       | OFF   |
| skip_show_database    | OFF   |
+-----------------------+-------+
4 rows in set (0.00 sec)

mysql> set global skip_name_resolve = 1;
ERROR 1238 (HY000): Variable 'skip_name_resolve' is a read only variable
mysql>

Như được hiển thị, skip-host-cachekhông thể nhìn thấy trong danh sách các biến toàn cục. Đối với skip_name_resolve, nó đã được nhìn thấy. Tuy nhiên, nó không thể thay đổi linh hoạt vì đây là biến chỉ đọc.

Do đó, skip-host-cacheskip-name-resolvechỉ có thể được thay đổi thông qua khởi động lại mysql.


Chúng tôi có bất kỳ vấn đề như ảnh hưởng của việc vô hiệu hóa tra cứu DNS không?
Uday

@Uday mối quan tâm duy nhất trong mysql là: Bạn không thể sử dụng tên DNS một cách hiệu quả trong cột máy chủ của mysql.user. Nếu bạn có bất kỳ, bạn cần thay thế chúng bằng địa chỉ IP công cộng hoặc riêng tư (tốt nhất) thay thế.
RolandoMySQLDBA

@RolandoMySQLDBA có cách nào để thêm skip-host-cacheskip-name-resolvekhông cần khởi động lại MySql không?
Ran

@Ran Xin lỗi, câu trả lời là không. Tôi cập nhật câu trả lời của tôi để phản ánh điều này.
RolandoMySQLDBA

Có thể có bất kỳ vấn đề có thể có như kết nối từ localhost hoặc bất kỳ vấn đề nào khác không? Tôi đang gặp vấn đề với ip243.221.167.124.adsl-pool.sx.cn
Malay M
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.