MySQL systemd on Linux 7
過去在Linux 6系列上用tar包安裝MySQL,要設定成系統服務很簡單,只要把mysql.server放在/etc/init.d裡面即可:
但在Linux 7系列中service的角色已被systemd給取代(雖然service還是能用),但要設開機自動啟動chkconfig就會有問題:
所以可以的話,我還是盡量設法弄成Linux 7相容的方式比較好
看了手冊的教學:https://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html
實在是太高深莫測了,我功力還不到家,看不太懂阿
後來看這篇http://superuser.com/questions/384365/systemctl-enable-differs-from-systemctl-start-how的說明,試做一下:
這樣就算是設定好啦,可以測試看看直接以systemctl指令開關MySQL
看文章裡有的人是直接用mysqld來設為ExecStart的指令,實際測試後也是能正常啟用:
總結:
跟官方手冊的內容相比,這個設定過程很簡單,但不知道未來實際執行上會不會有什麼問題
另外就是設定mysqld的那個雖然也可以啟動和關閉,但看那個狀態是Active: activating (start)而不是active (running)就不是很舒服阿~~~
我個人還是習慣用mysql.server的這個腳本來當作啟動服務。
- cp support-files/mysql.server /etc/init.d/mysqld
但在Linux 7系列中service的角色已被systemd給取代(雖然service還是能用),但要設開機自動啟動chkconfig就會有問題:
- [root@mysql-course support-files]# chkconfig --list mysqld
- Note: This output shows SysV services only and does not include native
- systemd services. SysV configuration data might be overridden by native
- systemd configuration.
- If you want to list systemd services use 'systemctl list-unit-files'.
- To see services enabled on particular target use
- 'systemctl list-dependencies [target]'.
所以可以的話,我還是盡量設法弄成Linux 7相容的方式比較好
看了手冊的教學:https://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html
實在是太高深莫測了,我功力還不到家,看不太懂阿
後來看這篇http://superuser.com/questions/384365/systemctl-enable-differs-from-systemctl-start-how的說明,試做一下:
- [root@mysql-course ~]# systemctl status mysqld.service
- mysqld.service
- Loaded: not-found (Reason: No such file or directory)
- Active: inactive (dead)
- [root@mysql-course ~]# vim /etc/systemd/system/mysqld.service
- [Unit]
- Description=MySQL Server
- After=network.target
- After=syslog.target
- [Install]
- WantedBy=multi-user.target
- [Service]
- User=mysql
- Group=mysql
- Type=forking
- PermissionsStartOnly=true
- ExecStart=/opt/percona57/bin/mysql.server start
- ExecStop=/opt/percona57/bin/mysql.server stop
- Restart=on-failure
- RestartPreventExitStatus=1
- PrivateTmp=false
- [root@mysql-course ~]# systemctl daemon-reload
- [root@mysql-course ~]# systemctl status mysqld.service
- mysqld.service - MySQL Server
- Loaded: loaded (/etc/systemd/system/mysqld.service; disabled)
- Active: inactive (dead)
- [root@mysql-course ~]# systemctl enable mysqld.service
- ln -s '/etc/systemd/system/mysqld.service' '/etc/systemd/system/multi-user.target.wants/mysqld.service'
- [root@mysql-course ~]# systemctl start mysqld.service
- [root@mysql-course ~]# systemctl status mysqld.service
- mysqld.service - MySQL Server
- Loaded: loaded (/etc/systemd/system/mysqld.service; enabled)
- Active: active (running) since Thu 2016-09-29 17:36:57 CST; 7s ago
- Process: 2858 ExecStart=/opt/percona57/bin/mysql.server start (code=exited, status=0/SUCCESS)
- Main PID: 2873 (mysqld_safe)
- CGroup: /system.slice/mysqld.service
- ├─2873 /bin/sh /opt/percona57/bin/mysqld_safe --datadir=/opt/percona57/data --pid-file=/opt/percona57/data/...
- └─3656 /opt/percona57/bin/mysqld --basedir=/opt/percona57 --datadir=/opt/percona57/data --plugin-dir=/opt/p...
- Sep 29 17:36:57 mysql-course mysql.server[2858]: Starting MySQL (Percona Server).... SUCCESS!
- Sep 29 17:36:57 mysql-course systemd[1]: Started MySQL Server.
- [root@mysql-course ~]# systemctl is-enabled mysqld.service
- enabled
- [root@mysql-course ~]# systemctl is-active mysqld.service
- active
這樣就算是設定好啦,可以測試看看直接以systemctl指令開關MySQL
- [root@mysql-course ~]# systemctl stop mysqld.service
- [root@mysql-course ~]# systemctl is-active mysqld.service
- inactive
- [root@mysql-course ~]# systemctl start mysqld.service
- [root@mysql-course ~]# systemctl is-active mysqld.service
- active
- [root@mysql-course ~]# systemctl restart mysqld.service
- [root@mysql-course ~]# systemctl is-active mysqld.service
- active
看文章裡有的人是直接用mysqld來設為ExecStart的指令,實際測試後也是能正常啟用:
- [root@mysql-course ~]# vim /etc/systemd/system/mysqld.service
- ExecStart=/opt/percona57/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/opt/percona57/data --socket=/tmp/mysql.sock
- #ExecStart=/opt/percona57/bin/mysql.server start
- #ExecStop=/opt/percona57/bin/mysql.server stop
- [root@mysql-course percona57]# vim /etc/systemd/system/mysqld.service
- [root@mysql-course percona57]# systemctl daemon-reload
- [root@mysql-course percona57]# systemctl start mysqld.service
- ^C -->每次都會卡在這裡,都要用crtl+c離開很困擾阿
- [root@mysql-course percona57]# systemctl status mysqld.service
- mysqld.service - MySQL Server
- Loaded: loaded (/etc/systemd/system/mysqld.service; enabled)
- Active: activating (start) since Thu 2016-09-29 17:59:05 CST; 26s ago
- Control: 7103 (mysqld)
- CGroup: /system.slice/mysqld.service
- └─7103 /opt/percona57/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/opt/percona57/data --socket=/tmp/my...
- [root@mysql-course percona57]# systemctl stop mysqld.service
- [root@mysql-course percona57]# systemctl status mysqld.service
- mysqld.service - MySQL Server
- Loaded: loaded (/etc/systemd/system/mysqld.service; enabled)
- Active: inactive (dead) since Thu 2016-09-29 18:01:21 CST; 1s ago
- Process: 7167 ExecStart=/opt/percona57/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/opt/percona57/data --socket=/tmp/mysql.sock& (code=exited, status=0/SUCCESS)
總結:
跟官方手冊的內容相比,這個設定過程很簡單,但不知道未來實際執行上會不會有什麼問題
另外就是設定mysqld的那個雖然也可以啟動和關閉,但看那個狀態是Active: activating (start)而不是active (running)就不是很舒服阿~~~
我個人還是習慣用mysql.server的這個腳本來當作啟動服務。
留言
張貼留言