[size=medium][color=blue][b]1、基本mysql安装[/b][/color][/size]
[code="java"]因为工作需要,今天在linux上安装了mysql,现在把大致的过程记录一下。
我用的mysql的版本的是:mysql-5.1.49-linux-i686-icc-glibc23.tar.gz
在官网上就可以下载到。
先期工作:建立mysql用户组,mysql用户,并且把mysql用户加入到mysql用户组中。
建立mysql用户组:groupadd mysql
建立mysql用户并加入mysql用户组:useradd mysql -g mysql -p mysql123456 -s /sbin/nologin -M
说明:-g 是加入到mysql用户组,-p是设置密码,-s是设置shell,这里设置的是不让其登录,-M就是不建立用户目录。
下面是安装mysql的步骤
1、把按照文件拷贝到:/usr/local,
用的命令是cp –rf mysql-5.1.49-linux-i686-icc-glibc23.tar.gz /usr/local/ ,
然后到目录/usr/local/下面解压缩文件:tar zxf mysql-5.1.49-linux-i686-icc-glibc23.tar.gz
2、创建软连接:ln -s mysql-5.0.51a-linux-i686-glibc23 /usr/local/mysql
ps:链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link),也称为软连接。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对软链接,则不存在这个问题。默认情况下,ln产生硬链接。 如果创建软链接需要参数 -s
3、到软连接mysql目录下,初始化mysql表格,安装 mysql 默认数据库:
cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql
完整安装参数可以参考下面这些
--prefix=/usr/local/mysql
--datadir=/usr/local/mysql/data
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
--with-mysqld-user=mysql
--sysconfdir=/usr/local/mysql/conf
--enable-local-infile
--enable-assembler
--enable-thread-safe-client
--with-charset=utf8
--with-extra-charsets=all
--with-pthread
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
控制台打印出:
Installing MySQL system tables...
OK
Filling help tables...
OK
.....
即说明安装成功。
4、修改目录权限,如下:
# cd /usr/local
# chgrp -R mysql mysql-5.0.51a-linux-i686-glibc23
# chgrp -R mysql mysql
# chown -R mysql mysql-5.0.51a-linux-i686-glibc23/data
# chown -R mysql mysql/data
5、启动mysql
到mysql录下:
# bin/mysqld_safe --user=mysql --socket=/tmp/mysql.sock --port=3306 &
这种启动方式,看不出启动效果,因为要继续输入命令查看是否启动成功的话,就会停止数据库。所以赶紧进行第6步
6、添加到系统自启动,如下:
# cp mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
7、启动mysql服务进程,如下:
设置路径: ln -s /usr/local/mysql/bin/mysql /usr/bin
# /etc/init.d/mysqld start
启动完成赶紧查看mysql状态,命令: /etc/rc.d/init.d/mysqld status,看看m y s q l 是否已经启动.
还可以查看一下 3306 端口是否已经在监听:
netstat -anp|grep LISTEN
8、给mysql的 root 用户指定密码为"123456",host为localhost ,如下:
在目录 /user/local/mysql/下面
bin/mysqladmin --socket=/tmp/mysql.sock --port=3306 -u root -h localhost password '123456'
注意:确定你的mysql.sock是不是在/tmp/mysql.sock这里,
可以vi /etc/my.cnf 查看一下:
sorket=/var/lib/mysql/mysql.sock
这行就指定了mysql.sock的位置。
所以要修改命令为bin/mysqladmin --socket=/var/lib/mysql/mysql.sock --port=3306 -u root -h localhost password '123456'
ok,密码修改成功!
9、登陆
bin/mysql --port=3306 -u root -p -S /var/lib/mysql/mysql.sock
Enter password:
输入 123456
登陆成功!
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.51a MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
注意:如果登录失败,报如下错误的话:
Can't connect to local MySQL server through socket'=/var/lib/mysql/mysql.sock'
#100810 22:43:43 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
可以在启动命令中加入 -h127.0.0.1,即:
bin/mysql -h127.0.0.1 --port=3306 -u root -p -S /var/lib/mysql/mysql.sock
10、关于chkconfig命令用法介绍
chkconfig(check config)
功能说明:检查,设置系统的各种服务。
语 法:chkconfig
[--add][--del][--list][系统服务]或chkconfig[--level<等级代号>][系统服务][on/off/reset]
补充说明:这是RedHat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。
参 数:
--add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
--del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
--level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕
1):chkconfig 命令也可以用来激活和解除服务。chkconfig --list 命令显示系统服务列表,以及这些服务在运行级别0到6中已被启动(on)还是停止(off)。
chkconfig --list
chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2):chkconfig 还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。譬如,要在运行级别3、4、5中停运 nscd 服务,使用下面的命令:
chkconfig --level 345 nscd off
3):由 xinetd 管理的服务会立即被 chkconfig 影响。譬如,如果 xinetd 在运行,finger 被禁用,那么执行了 chkconfig finger on 命令后,finger 就不必手工地重新启动 xinetd 来立即被启用。对其它服务的改变在使用 chkconfig 之后不会立即生效。必须使用service servicename start/stop/restart命令来重起服务[/code]
[size=medium][color=blue][b]2、MASTER SLAVE 配置[/b][/color][/size]
[color=red]其他问题: 当在master中配置binlog-do-db或者binlog-ignore-db配置同步数据库名称时,多数据库同步会有问题,所以master中注释掉上面2项配置,直接在slave中增加replicate-ignore-db=mysql 即可。
[/color]
[code="java"]因为工作需要,今天在linux上安装了mysql,现在把大致的过程记录一下。
我用的mysql的版本的是:mysql-5.1.49-linux-i686-icc-glibc23.tar.gz
在官网上就可以下载到。
先期工作:建立mysql用户组,mysql用户,并且把mysql用户加入到mysql用户组中。
建立mysql用户组:groupadd mysql
建立mysql用户并加入mysql用户组:useradd mysql -g mysql -p mysql123456 -s /sbin/nologin -M
说明:-g 是加入到mysql用户组,-p是设置密码,-s是设置shell,这里设置的是不让其登录,-M就是不建立用户目录。
下面是安装mysql的步骤
1、把按照文件拷贝到:/usr/local,
用的命令是cp –rf mysql-5.1.49-linux-i686-icc-glibc23.tar.gz /usr/local/ ,
然后到目录/usr/local/下面解压缩文件:tar zxf mysql-5.1.49-linux-i686-icc-glibc23.tar.gz
2、创建软连接:ln -s mysql-5.0.51a-linux-i686-glibc23 /usr/local/mysql
ps:链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link),也称为软连接。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对软链接,则不存在这个问题。默认情况下,ln产生硬链接。 如果创建软链接需要参数 -s
3、到软连接mysql目录下,初始化mysql表格,安装 mysql 默认数据库:
cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql
完整安装参数可以参考下面这些
--prefix=/usr/local/mysql
--datadir=/usr/local/mysql/data
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
--with-mysqld-user=mysql
--sysconfdir=/usr/local/mysql/conf
--enable-local-infile
--enable-assembler
--enable-thread-safe-client
--with-charset=utf8
--with-extra-charsets=all
--with-pthread
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
控制台打印出:
Installing MySQL system tables...
OK
Filling help tables...
OK
.....
即说明安装成功。
4、修改目录权限,如下:
# cd /usr/local
# chgrp -R mysql mysql-5.0.51a-linux-i686-glibc23
# chgrp -R mysql mysql
# chown -R mysql mysql-5.0.51a-linux-i686-glibc23/data
# chown -R mysql mysql/data
5、启动mysql
到mysql录下:
# bin/mysqld_safe --user=mysql --socket=/tmp/mysql.sock --port=3306 &
这种启动方式,看不出启动效果,因为要继续输入命令查看是否启动成功的话,就会停止数据库。所以赶紧进行第6步
6、添加到系统自启动,如下:
# cp mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
7、启动mysql服务进程,如下:
设置路径: ln -s /usr/local/mysql/bin/mysql /usr/bin
# /etc/init.d/mysqld start
启动完成赶紧查看mysql状态,命令: /etc/rc.d/init.d/mysqld status,看看m y s q l 是否已经启动.
还可以查看一下 3306 端口是否已经在监听:
netstat -anp|grep LISTEN
8、给mysql的 root 用户指定密码为"123456",host为localhost ,如下:
在目录 /user/local/mysql/下面
bin/mysqladmin --socket=/tmp/mysql.sock --port=3306 -u root -h localhost password '123456'
注意:确定你的mysql.sock是不是在/tmp/mysql.sock这里,
可以vi /etc/my.cnf 查看一下:
sorket=/var/lib/mysql/mysql.sock
这行就指定了mysql.sock的位置。
所以要修改命令为bin/mysqladmin --socket=/var/lib/mysql/mysql.sock --port=3306 -u root -h localhost password '123456'
ok,密码修改成功!
9、登陆
bin/mysql --port=3306 -u root -p -S /var/lib/mysql/mysql.sock
Enter password:
输入 123456
登陆成功!
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.51a MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
注意:如果登录失败,报如下错误的话:
Can't connect to local MySQL server through socket'=/var/lib/mysql/mysql.sock'
#100810 22:43:43 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
可以在启动命令中加入 -h127.0.0.1,即:
bin/mysql -h127.0.0.1 --port=3306 -u root -p -S /var/lib/mysql/mysql.sock
10、关于chkconfig命令用法介绍
chkconfig(check config)
功能说明:检查,设置系统的各种服务。
语 法:chkconfig
[--add][--del][--list][系统服务]或chkconfig[--level<等级代号>][系统服务][on/off/reset]
补充说明:这是RedHat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。
参 数:
--add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
--del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
--level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕
1):chkconfig 命令也可以用来激活和解除服务。chkconfig --list 命令显示系统服务列表,以及这些服务在运行级别0到6中已被启动(on)还是停止(off)。
chkconfig --list
chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2):chkconfig 还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。譬如,要在运行级别3、4、5中停运 nscd 服务,使用下面的命令:
chkconfig --level 345 nscd off
3):由 xinetd 管理的服务会立即被 chkconfig 影响。譬如,如果 xinetd 在运行,finger 被禁用,那么执行了 chkconfig finger on 命令后,finger 就不必手工地重新启动 xinetd 来立即被启用。对其它服务的改变在使用 chkconfig 之后不会立即生效。必须使用service servicename start/stop/restart命令来重起服务[/code]
[size=medium][color=blue][b]2、MASTER SLAVE 配置[/b][/color][/size]
mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。
详细出处参考:http://www.jb51.net/article/23843.htm
1。mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现mysql数据库的热备份。
2。要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
3。设置主数据库服务器:
a.首先查看主服务器的版本是否是支持热备的版本。然后查看my.cnf(类unix)或者my.ini(windows)中mysqld配置块的配置有没有log-bin(记录数据库更改日志),因为mysql的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。
server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库
以上的如果有多个数据库用","分割开
然后设置同步数据库的用户帐号
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
4.0.2以前的版本, 因为不支持REPLICATION 要使用下面的语句来实现这个功能
mysql> GRANT FILE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
设置好主服务器的配置文件后重新启动数据库
b.锁定现有的数据库并备份现在的数据
锁定数据库
mysql> FLUSH TABLES WITH READ LOCK;
备份数据库有两种办法一种是直接进入到mysql的data目录然后打包你需要备份数据库的文件夹,第二种是使用mysqldump的方式来备份数据库但是要加上"--master-data " 这个参数,建议使用第一种方法来备份数据库
c.查看主服务器的状态
mysql> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
记录File 和 Position 项目的值,以后要用的。
d.然后把数据库的锁定打开
mysql> UNLOCK TABLES;
4。设置从服务器
a.首先设置数据库的配置文件
server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。
master-host=db-master.mycompany.com //主服务器的IP地址或者域名
master-port=3306 //主数据库的端口号
master-user=pertinax //同步数据库的用户
master-password=freitag //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
report-host=db-slave.mycompany.com //报告错误的服务器
b.把从主数据库服务器备份出来的数据库导入到从服务器中
c.然后启动从数据库服务器,如果启动的时候没有加上"--skip-slave-start"这个参数则进入到mysql中
mysql> slave stop; //停止slave的服务
d.设置主服务器的各种参数
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
e.启动同步数据库的线程
mysql> slave start;
查看数据库的同步情况吧。如果能够成功同步那就恭喜了!
查看主从服务器的状态
mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程
如果日志太大清除日志的步骤如下
1.锁定主数据库
mysql> FLUSH TABLES WITH READ LOCK;
2.停掉从数据库的slave
mysql> slave stop;
3.查看主数据库的日志文件名和日志文件的position
show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin.001 | 79 | | mysql |
+---------------+----------+--------------+------------------+
4.解开主数据库的锁
mysql> unlock tables;
5.更新从数据库中主数据库的信息
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
6.启动从数据库的slave
mysql> slave start;
[color=red]其他问题: 当在master中配置binlog-do-db或者binlog-ignore-db配置同步数据库名称时,多数据库同步会有问题,所以master中注释掉上面2项配置,直接在slave中增加replicate-ignore-db=mysql 即可。
[/color]
This was a problem when I went to set up replication. After much research, I found the solution (works with 4 and up):
In your MASTER my.cnf file, DO NOT put any 'binlog-ignore-db' or 'do-db' options. Any db's you wish to not replicate will be handled in the slave conf file ..
In your SLAVE my.cnf file, use a 'replicate-ignore-db=<db>' for all the databases from the master you wish to stop from replicating to the slave.
For all the db's you DO wish to replicate, use a 'replicate-wild-do-table=<db>.%' line.