วิธีการเปิดใช้งานการบันทึก MySQL?


36

ฉันใช้งาน MySQL 5.0.45 ใน OS X 10.6.1 และฉันไม่สามารถให้ MySQL บันทึกสิ่งใดได้ ฉันกำลังดีบั๊กแอปพลิเคชันและต้องการดูข้อผิดพลาดและข้อผิดพลาดทั้งหมด

ฉันเพิ่มไปยัง etc / my.cnf:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

ฉันใช้ sudo เพื่อสร้างไฟล์บันทึกสองไฟล์ตั้งค่าการอนุญาตเป็น 644 จากนั้นเริ่ม MySQL ใหม่

ฉันอ้างถึงmysql ของฉันอยู่ที่ไหนใน OS X? เพื่อแก้ไขปัญหา

วิ่ง:

ps auxww|grep [m]ysqld

ผลตอบแทน:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

และวิ่ง:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

ผลตอบแทน:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

วิ่ง:

mysql> show variables like '%log%';

ผลตอบแทน:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

มีความช่วยเหลือเกี่ยวกับวิธีที่ฉันจะทำให้ MySQL เข้าสู่ระบบได้อย่างไร?

คำตอบ:


23

แม้ว่าคุณจะใช้chmod 644ก็ตามให้แน่ใจว่า mysql เป็นเจ้าของบันทึก

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

ถัดไปเริ่ม mysqld

จากนั้นเข้าสู่ mysql และเรียกใช้:

mysql> show variables like '%log%';

ดูค่าสำหรับgeneral_log, general_log_file, log, log_errorฯลฯ

เปิดใช้งานได้ตามต้องการและเรียกใช้mysqladmin flushlogsตามต้องการ


กำลังเข้าสู่ระบบ จะต้องมีการกำกับดูแลความเป็นเจ้าของ แม้ว่าดูคำถามที่แก้ไขของฉันสำหรับผลลัพธ์ของการค้นหา "แสดงตัวแปรเช่น '% log%'" MySQL กำลังเข้าสู่ /var/log/mysql.log ดังนั้นทำไมมันไม่แสดง?
RyOnLife

13

ในการเปิดใช้งานไฟล์บันทึกคุณต้องตรวจสอบให้แน่ใจว่าหนึ่งหรือมากกว่าหนึ่งคำสั่งต่อไปนี้อยู่ใน[mysqld]ส่วนของไฟล์กำหนดค่าหลักของเซิร์ฟเวอร์ mysql ( /etc/my.cnfตามใจ):

[mysqld]
log-bin
log
log-error
log-slow-queries

โดยค่าเริ่มต้นแล้วจะมีการสร้างบันทึกในไดเรกทอรีข้อมูลเดียวกันกับไดเรกทอรีฐานข้อมูลตัวเอง (โดยทั่วไป/var/lib/mysql) และชื่อไฟล์บันทึกเริ่มต้นเป็นชื่อโฮสต์ตามด้วยคำต่อท้ายที่ตรงกับชื่อคำสั่งด้านบน (เช่น -bin, -slow - คำถาม ฯลฯ )

ในการเก็บบันทึกของคุณในเส้นทางที่แตกต่างหรือใช้ชื่อไฟล์ที่แตกต่างกันให้ระบุชื่อฐานตามlog=คำสั่งและเส้นทางและชื่อไฟล์ที่คุณชอบเช่น:

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

คุณต้องรีสตาร์ท mysqld เพื่อให้การเปลี่ยนแปลงเหล่านี้มีผล


5

คำตอบก่อนหน้านี้ล้าสมัยแล้ว คุณสามารถดูไฟล์การกำหนดค่าในหรือบนหน้าต่าง/etc/my.cnf./mysql/my.ini

ใน[mysqld]ส่วนเพิ่ม

log_bin
general_log
log_error

เอกสารสำหรับ Windows ProgramData/MySQL/MySQL Server 5.6/ระบุว่าบันทึกได้เก็บไว้ใน ไม่ต้องสนใจเพราะมันเป็นเรื่องโกหก

นอกจากนี้logตัวเลือกที่แนะนำจะถูกคิดค่าเสื่อมราคาและทำให้เกิดข้อผิดพลาด

ambiguous option '--log' (log-bin, log_slave_updates)

กำลังเข้าสู่ระบบ./mysql/data/host.errและภูตตายอย่างเงียบ ๆ general-logการตั้งค่าที่ถูกต้องคือ

ยังlog-slow-queriesไม่ถูกต้องและทำให้เกิดข้อผิดพลาด

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

ดังนั้นจงอยู่ให้ห่างจากสิ่งนั้นด้วย


ขอขอบคุณ! ฉันไม่สามารถเริ่มต้นเซิร์ฟเวอร์ด้วยlog=ตัวเลือกและอาจทำให้ฉันรู้ว่าทำไม ในที่สุดใครบางคนที่มีคำตอบ general-log
jiveturkey

2

ป้อนบรรทัดคำสั่ง mysql พร้อมสิทธิ์ระดับสูงและดำเนินการ:

SET GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

ในกรณีของฉันมันไม่สำคัญว่าฉันมีตัวแปรนี้ตั้งไว้แล้วด้วยค่าเดียวกัน! นอกจากนี้ฉันเปลี่ยนสิทธิ์และเจ้าของไฟล์ตามที่กล่าวถึงในโพสต์อื่น ๆ


1

ลองตั้งค่าบันทึกอื่นใน my.cnf ในกรณีของฉันฉันต้องการ:

general_log = on

general_log_file=/var/log/mysql/mysql.log
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.