从头开始学习linux下mysql管理(学习记录)
本人之前虽然用过一段时间linux,但mysql和apache一直都没碰过,顶多是别人给做成系统服务,然后我运行下service httpd restart,service mysqld restart而已。新的单位由于没人对这个熟悉,只好我自己亲自上马开始学了。因为什么都不知道,只好先从最简单的安装学起,希望能够慢慢深入学习。
我们的网站管理人员留给我的参考安装文档如下:
安装MYSQL
找一个mysql的安装包,比如mysql-standard-5.0.15-linux-i686.tar.gz其他版本也行
随便放在一个放置软件包的地方,比如/home/soft/
然后cd进入那个目录
# tar -zxf mysql-standard-5.0.15-linux-i686.tar.gz
# cp -r mysql-standard-5.0.15-linux-i686 /usr/local/mysql
# vi /usr/local/mysql/support-files/my-medium.cnf
在后面加上
max_connections = 1000
log-slow-queries
long_query_time = 5
注 max_connections 为允许的最大连接数
log-slow-queries 打开低速查询日志
long_query_time 低速查询的秒数(运行一句sql达到此时间记录在日志里)
然后COPY 它为 /etc/my.cnf 文件
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
添加mysql用户及用户组
# groupadd mysql
# useradd -g mysql mysql
修改mysql目录权限
# chown -R root /usr/local/mysql
# chgrp -R mysql /usr/local/mysql
# chown -R mysql /usr/local/mysql/data
生成mysql系统数据库
# /usr/local/mysql/scripts/mysql_install_db --user=mysql&
# chown -R mysql:mysql data/
启动mysql服务
# /usr/local/mysql/bin/mysqld_safe --user=mysql&
如出现 Starting mysqld daemon with databases from /usr/local/mysql/data
代表正常启动mysql服务了, 按Ctrl + C 跳出
修改 mysql 的 root 密码
# /usr/local/mysql/bin/mysqladmin -u root -p password 123456
回车出现 Enter password: 最开始密码默认为空 继续回车即可
123456 即为你的新密码
自己继续看了些资料,在redhat系统下,应该将mysql主目录下的support-files/mysql.server,cp为/etc/init.d/mysql,修改权限,使之成为系统服务:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
chkconfig mysql on
这样mysql服务就能在系统启动的时候自己启动了,平时维护也可以用service mysql start/restart/stop这样的命令了。
能够安装mysql,然后让它成为系统服务,能够随时启动和停止mysql服务,这是mysql管理的第一步。
[[i] 本帖最后由 iamshiyu 于 2008-4-29 10:11 编辑 [/i]] 其他开启和关闭mysql服务的方法有:
启动:mysqld_safe --user=mysql&
关闭:mysqladmin -p -u root -h xxx.xxx.xxx.xx shutdown
xxx.xxx.xxx是你想要关闭数据库服务器的域名或IP地址,mysqladmin是一个mysql下最常用的数据库管理工具,可以通过它直接在shell里面向数据库发出各种管理命令,而不用非得进入mysql里面才行。
如果mysql启动了,使用ps命令查看系统进程,应该可以看到很多关于mysql的进程:
ps aux | grep mysql
其中大部分进程的所有者都是mysql这个系统用户(如果你是按照我前面介绍的那样装上了mysql,这种方法对于4.0版本的mysql同样适用),但有一个进程的所有者是root,这就是mysql服务器的父进程,我们也可以称之为总进程,一旦这个进程没有了,mysql服务器也就停止工作了,如果只删除属于mysql用户的子进程,mysql实际上还在运行。
这个父进程的进程号,保存在/usr/local/mysql/data/xxxDB.pid中,xxx指你这台主机的机器名。因此你也可以使用kill -9 `cat /usr/local/mysql/data/xxxDB.pid`这样的命令来强行关闭mysql。 然后应该学习基本的mysql指令,登陆到mysql服务器中
#mysql -u 用户名 -h 服务器机器名或IP -p
passwd:*******
mysql〉
这样你就进入服务器中了。
至少应该先学会这样一些命令:show,select,drop,create,insert……
总之你应该首先对如何查看数据库,如何查看数据库中的表和数据项目有个了解,然后是如何创建、如何删除、如何插入、如何修改等等。
退出使用quit命令,其他命令执行的时候,结尾必须有“;”,否则绝大部分命令不能执行。
[[i] 本帖最后由 iamshiyu 于 2008-4-29 09:58 编辑 [/i]]
下一步管理内容
首先你应该知道你的数据库目录结构,mysql有一个数据目录,一般来说默认/usr/local/mysql/data/这个目录为mysql的数据目录,这个目录存放所有的数据文件,和很多日志文件,可以在安装mysql的时候指定这个目录。数据库的存放有一定的规则,简而言之,data目录下的每一个目录,对应一个数据库(在mysql中通过show databases;可以看到本mysql服务器中有哪些数据库),这些数据库与data目录下的子目录名一一对应。
注,因此可能会发生建立某个数据库建立不起来的情况,因为linux系统在给目录命名时有一定规则,这个规则与mysql并不相同,因此一旦在mysql中建立了不允许在linux目录命名规则中出现的名字,这个数据库可能就建立失败了,这应该注意。
mysql服务器自身的配置文件是/etc/my.cnf(我不清楚是否有可能不放在这里,我见过的都是放在这里的),但是日志文件基本都在data目录中,包括一个错误日志——名字一般为“你机器的域名”+“.err”,一个pid文件(这个文件中的数字就是对应你的mysql服务器启动时所使用的进程号,kill -9 这个进程号,就能强行关掉mysql服务),新版本的mysql中还有
ib_arch_log_0000000000
ibdata1
ib_logfile0
ib_logfile1
这样四个文件——没有的话大约是你在my.cnf文件中设置了skip-innodb这个开关。这几个文件是InnoDB带来的,InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。更具体的东西可以查看mysql的手册,不要轻易删除它们,否则数据库就会出错。
默认的mysql(我的是5.0)会使用binlog模式记录数据库日志,binlog日志会记录所有对数据库的有效操作,这意味着你可以通过binlog日志彻底恢复你的数据库。
你可以在数据库中使用如下命令检验你的mysql服务器是否开启了binlog日志:
mysql>show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec)
还可以用这个命令查看所有mysql日志的状态:
mysql> show variables like 'log%';
好多的xxxx-bin.xxxx我怎么知道当前在使用哪个文件在记录日志呢?
mysql> show master status;
观看这些日志的内容使用如下命令
shell>mysqlbinlog mydoman-bin.000001
mysql日志生成的速度还是比较快的,你可以通过du和df这两个命令来关注一下它们到底占用了你多少硬盘,以及你的硬盘还剩多少可用空间。
下一章我们讨论如何备份日志。
转贴一篇
************************************************* 如何管理 MySQL 的 binlog *
************************************************
1、在 my.ini 中增加下述参数,指定保存更新到 binlog 的数据库:db_name,未在此指定的数据库将不记录 binlog
--binlog-do-db=db_name
2、在 my.ini 中增加下述参数,指定不保存更新到 binlog 的数据库:db_name
--binlog-ignore-db=db_name
3、如果 binlog 已经产生,可以通过 SQL 命令行清除:
/*
* 要清理日志,需按照以下步骤:
* 1 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
* 2 使用SHOW MASTER LOGS获得主服务器上的一系列日志。
* 3 在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是更新的,这是清单上的最后一个日志。
* 4 制作您将要删除的所有日志的备份。(这个步骤是自选的,但是建议采用。)
* 5 清理所有的日志,但是不包括目标日志。
*
*/
/*
* 清除 binlog
*
* 为了执行RESET,您必须拥有RELOAD权限。
* 以下命令将删除列于索引文件中的所有 binlog,把 binlog 索引文件重新设置为空,并创建一个新的 binlog。
* (在以前版本的MySQL中,被称为FLUSH MASTER。)
*/
RESET MASTER;
/*
* 清除指定的 binlog
*
*/
PURGE MASTER LOGS TO 'mysql-bin.010';
/*
* 清除日期为 2006-06-06 06:06:06 以前的 binlog
*
* BEFORE变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同义词。
*/
PURGE MASTER LOGS BEFORE '2006-06-06 06:06:06';
/*
* 清除3天前的 binlog
*
*/
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); 好复杂~:Q: ……:L:
是啊,干点事情不容易。
其实还没到一半呢…… 加油吧,我最近的计划也是LAMP嘿嘿 嗯,共同加油,关键是老被打断,也没什么办法。
页:
[1]