ด้วยข้อดีหลายๆ อย่างที่มีเพิ่มใน MySQL เวอร์ชั่น 5.1 ไม่ว่าจะเป็น partitioning, replication, storage engine, และอื่นๆ ทางเราแนะนำให้ upgrade เป็นเวอร์ชั่นใหม่
บทความนี้จะแนะนำวิธีการ upgrade MySQL บน Fedora 10 ซึ่งเวอร์ชั่นที่มากับแผ่นดีวีดีติดตั้งจะเป็นเวอร์ชั่น 5.0.67 โดยจะปรับปรุงเฉพาะ MySQL แต่จะไม่มีการปรับปรุง ส่วนอื่นๆ ที่มาต่อเชื่อม เช่น PHP ยังคงใช้ไฟล์ rpm ชื่อ php-mysql ที่อยู่ในแผ่นติดตั้ง Fedora 10 สร้างมาสำหรับ MySQL 5.0
ตรวจสอบ MySQL ที่ติดตั้งและสำรองข้อมูล
ใช้คำสั่ง rpm เพื่อตรวจสอบว่ามี MySQL ติดตั้งอยู่หรือไม่
[root@mysql5 ~]# rpm -qa | grep -i mysql mysql-5.0.67-2.fc10.x86_64 mysql-server-5.0.67-2.fc10.x86_64 php-mysql-5.2.6-5.x86_64 mysql-libs-5.0.67-2.fc10.x86_64 perl-DBD-MySQL-4.005-8.fc9.x86_64
ปิดเว็บเซิร์ฟเวอร์หรือโปรแกรมอื่นๆ ที่มีการเชื่อมต่อเข้ากับ database ตัวนี้
[root@mysql5 ~]# service httpd stop Stopping httpd: [ OK ]
ใช้คำสั่ง mysqldump เพื่อสำรองข้อมูลของ database ทั้งหมด บันทึกเป็นไฟล์เก็บไว้
[root@mysql5 ~]# mysqldump -u root -p --all-databases > mysql-5.0-dump.sql
ปิดเซอร์วิส MySQL Database Server
[root@mysql5 ~]# service mysqld stop Stopping MySQL: [ OK ]
ถอดโปรแกรม MySQL และโปรแกรมที่เกี่ยวข้องที่ติดตั้งอยู่
ใช้คำสั่ง rpm -ev เพื่อถอดโปรแกรม MySQL และโปรแกรมที่เกี่ยวข้องออก
[root@mysql5 ~]# rpm -ev mysql-server warning: /var/log/mysqld.log saved as /var/log/mysqld.log.rpmsave [root@mysql5 ~]# rpm -ev mysql [root@mysql5 ~]# rpm -ev perl-DBD-MySQL [root@mysql5 ~]# rpm -ev php-mysql [root@mysql5 ~]# rpm -ev mysql-libs warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
ติดตั้ง MySQL 5.1
ดาวน์โหลด MySQL 5.1 จากเว็บไซต์ สามารถดูเว็บไซต์ดาวน์โหลดได้ในข้อมูลอ้างอิง สำหรับการติดตั้งบน Fedora 10 แนะนำให้เลือกเป็นไฟล์ rpm ที่สร้างขึ้นมาสำหรับ Red Hat Enterprise Linux 5 RPM โดยไฟล์ที่ต้องดาวน์โหลดมาประกอบด้วย
- Server
- Client
- Shared compatibility
หมายเหตุ เวอร์ชั่นล่าสุด ณ ตอนที่เขียนบทความนี้เป็นเวอร์ชั่น 5.1.31
ใช้คำสั่ง rpm -ivh เพื่อติดตั้งไฟล์ rpm ที่ดาวน์โหลดมา ตามลำดับดังนี้
[root@mysql5 rhel5]# rpm -ivh MySQL-client-community-5.1.31-0.rhel5.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-client-community ########################################### [100%]
[root@mysql5 rhel5]# rpm -ivh MySQL-shared-compat-5.1.31-0.rhel5.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-shared-compat ########################################### [100%] [root@mysql5 rhel5]# rpm -ivh MySQL-server-community-5.1.31-0.rhel5.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-server-community ########################################### [100%]
ERROR: 1136 Column count doesn't match value count at row 1 090214 11:59:07 [ERROR] Aborting
090214 11:59:07 [Warning] Forcing shutdown of 2 plugins 090214 11:59:07 [Note] /usr/sbin/mysqld: Shutdown complete
Installation of system tables failed! Examine the logs in /var/lib/mysql for more information.
You can try to start the mysqld daemon with:
shell> /usr/sbin/mysqld --skip-grant &
and use the command line tool /usr/bin/mysql to connect to the mysql database and look at the grant tables:
shell> /usr/bin/mysql -u root mysql mysql> show tables
Try 'mysqld --help' if you have problems with paths. Using --log gives you a log in /var/lib/mysql that may be helpful.
The latest information about MySQL is available on the web at http://www.mysql.com/. Please consult the MySQL manual section 'Problems running mysql_install_db', and the manual section that describes problems on your OS. Another information source are the MySQL email archives available at http://lists.mysql.com/.
Please check all of the above before mailing us! And remember, if you do mail us, you MUST use the /usr/bin/mysqlbug script!
Starting MySQL.[ OK ] Giving mysqld 2 seconds to start
หลังจากติดตั้ง เซอร์วิส MySQL จะรันขึ้นมาโดยอัตโนมัติ
ตรวจสอบไฟล์ rpm ของ MySQL 5.1 ที่ปรับปรุง
[root@mysql5 rhel5]# rpm -qa | grep -i mysql MySQL-shared-compat-5.1.31-0.rhel5.x86_64 MySQL-client-community-5.1.31-0.rhel5.x86_64 MySQL-server-community-5.1.31-0.rhel5.x86_64
ใช้คำสั่ง mysql เพื่อตรวจสอบเวอร์ชั่น และรายละเอียดอื่นๆ ของ database server ที่ปรับปรุงไป
[root@mysql5 rhel5]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.31-community MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select version(); +------------------+ | version() | +------------------+ | 5.1.31-community | +------------------+ 1 row in set (0.00 sec)
mysql> show engines; +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ 8 rows in set (0.00 sec)
mysql> exit
ติดตั้ง rpm ของ โปรแกรมอื่นๆ กลับเข้าไปเหมือนเดิม เช่น php-mysql ไฟล์จะอยู่ในแผ่นดีวีดีติดตั้ง
[root@mysql5 ~]# mount /dev/cdrom /media/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@mysql5 ~]# cd /media/Packages/ [root@mysql5 Packages]# rpm -ivh php-mysql-5.2.6-5.x86_64.rpm Preparing... ########################################### [100%] 1:php-mysql ########################################### [100%]
[root@mysql5 Packages]# cd / [root@mysql5 /]# umount /media/ [root@mysql5 /]#
รันเว็บเซิร์ฟเวอร์กลับเหมือนเดิม
[root@mysql5 /]# service httpd start Starting httpd: [ OK ]