Mysql-5.5.21 源码安装 2012-03-14
1 mysql-5.5.21编译安装
1.1 安装所需要系统库相关库文件
gcc gcc-c gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel*
yum -y install gcc gcc-c autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
1.2 创建mysql安装目录
[root@localhost ~]# mkdir -p /usr/local/mysql/
1.3 创建数据存放目录
[root@localhost ~]# mkdir -p /service/mysql/
1.4 创建用户和用户组与赋予数据存放目录权限
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -g mysql mysql
[root@localhost ~]# chown mysql.mysql -R /service/mysql/
1.5 安装cmake
(mysql-5.5以后是通过cmake来编译的)
下载解压cmake-2.8.7.tar.gz 放在/usr/local目录下
[root@localhost local]# tar -zxvf cmake-2.8.7.tar.gz
[root@localhost local]# cd cmake-2.8.7
[root@localhost cmake-2.8.7]#./configure
[root@localhost cmake-2.8.7]# make && make install
1.6 安装mysql 5.5.21
下载mysql-5.5.21到/usr/local目录下
[root@localhost local]# tar -zxvf mysql-5.5.21.tar.gz
[root@localhost local]# cd mysql-5.5.21
1.7 编译mysql-5.5.21
[root@localhost mysql-5.5.21]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/service/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/service/mysql \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306
上面的命令一次拷进命令行。
[root@localhost mysql-5.5.21]# make
[root@localhost mysql-5.5.21]# make install
1.8 复制配置文件
[root@localhost mysql-5.5.21]# cp support-files/my-medium.cnf /etc/my.cnf
1.9 初始化数据库
(执行前 需要chmod 755 scripts/mysql_install_db 赋给文件执行权限)
[root@localhost mysql-5.5.21]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/service/mysql/
注:#basedir mysql安装路径 datadir 数据库文件储存路径
1.10 设置mysqld的开机启动:
[root@localhost mysql-5.5.21]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.5.21]# chmod 755 /etc/init.d/mysqld
chkconfig mysqld on (设置开机启动mysql)
1.12 启动mysql服务
[root@localhost mysql-5.5.21]# /etc/init.d/mysqld start //服务器端开关
启动完成之后用ps -ef |grep mysql 命令查看是否启动
[root@localhost mysql-5.5.21]# mysql –u root –p
2 标准的mysql安装设置
2.1 设置root帐户的密码
[root@localhost mysql-5.5.21]# mysqladmin -u root password '123456'
2.2 删除本机匿名连接的空密码帐号
本机登录mysql
[root@localhost mysql-5.5.21]#mysql -u root -p
然后输入上面设置的密码,登录后在mysql的命令行中执行:
mysql>use mysql; //选择默认数据库mysql
mysql>update user set password=’root’ where user = '127.0.0.1';
mysql>delete from user where password="";//不允许root密码为空
mysql>flush privileges;
mysql>quit
2.3建表
最简单的:
2、带主键的:
a:
CREATE TABLE t1(
id int not null primary key,
name char(20)
);
b:复合主键
CREATE TABLE t1(
id int not null,
name char(20),
primary key (id,name)
);
3、带默认值的:
CREATE TABLE t1(
id int not null default 0 primary key,
name char(20) default '1'
);
Mysql的主从复制
Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。
(1)首先确保主从服务器上的Mysql版本相同
(2)在主服务器上,设置一个从数据库的账户,使用REPLICATION SLAVE赋予权限,如:
mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave001'@'172.16.10.143' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.13 sec)
(3)修改主数据库的配置文件my.cnf,开启BINLOG,并设置server-id的值,修改之后必须重启Mysql服务
(4)之后可以得到主服务器当前二进[mysqld]
log-bin = /home/mysql/log/mysql-bin.log
server-id=1
制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000003
Position: 243
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
(5)好了,现在可以停止主数据的的更新操作,并生成主数据库的备份,我们可以通过mysqldump到处数据到从数据库,当然了,你也可以直接用cp命令将数据文件复制到从数据库去
注意在导出数据之前先对主数据库进行READ LOCK,以保证数据的一致性
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.19 sec)
之后是mysqldump
mysqldump -h127.0.0.1 -p3306 -uroot -p test > /home/chenyz/test.sql
最好在主数据库备份完毕,恢复写操作
mysql>
Query OK, 0 rows affected (0.28 sec)
(6)将刚才主数据备份的test.sql复制到从数据库,进行导入
(7)接着修改从数据库的my.cnf,增加server-id参数,指定复制使用的用户,主数据库服务器的ip,端口以及开始执行复制日志的文件和位置
[mysqld]
server-id=2
log_bin =
192.168.1.100
master-user=test
master-pass=123456
master-port =3306
master-connect-retry=60
replicate-do-db =sms
(8)在从服务器上,启动slave进程
mysql>
(9)在从服务器进行show salve status验证
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: root
Master_Port: 3306
Connect_Retry: 3
Master_Log_File: mysql-bin.003
Read_Master_Log_Pos: 79
Relay_Log_File: gbichot-relay-bin.003
Relay_Log_Pos: 548
Relay_Master_Log_File: mysql-bin .003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(10)好了,现在可以在我们的主服务器做一些更新的操作,然后在从服务器查看是否已经更新