1
、首先安装
mysql
2
、新建系统用户以安全方式运行
mysqld
进程:
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M mysql
由于
/mydata/data
是用于存放
mysql
数据的文件,故要更改其属主属组为
mysql
:
# chown -R mysql:mysql /mydata/data
3
、安装并初始化
mysql-5.5.19
首先下载平台对应的
mysql-5.5.19
版本至本地,这里是
32
位平台,因此,选择的为
mysql-5.5.19-linux2.6-i686.tar.gz
,这个是绿色版的。
# tar xf mysql-5.5.19-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mysql-5.5.19-linux2.6-i686 mysql
# cd mysql
# chown -R mysql:mysql .
初始化数据库:
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
--user=
指定运行
mysql
数据库的用户
--datadir=
指定数据库数据的存放位置
# chown -R root .
4
、为
mysql
提供主配置文件:
# cd /usr/local/mysql
# cp support-files/my-large.cnf /etc/my.cnf
#vim /etc/my.cnf
修改此文件中
thread_concurrency
的值为你的
CPU
个数乘以
2
,比如这里使用如下行:
thread_concurrency = 2
另外还需要添加如下行指定
mysql
数据文件的存放位置:
datadir = /mydata/data
5
、为
mysql
提供
sysv
服务脚本:
# cd /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
添加至服务列表:
# chkconfig --add mysqld
# chkconfig mysqld on
接下来我们就可以执行
service
相关命令了
开启
mysqld
服务:
#service mysqld start
为了使用
mysql
的安装符合
Linux
系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
6
、输出
mysql
的
man
手册至
man
命令的查找路径:
#vim /etc/man.config
添加如下行即可:
MANPATH /usr/local/mysql/man
7
、输出
mysql
的头文件至系统头文件路径
/usr/include
:
这可以通过简单的创建链接实现:
# ln -sv /usr/local/mysql/include /usr/include/mysql
8
、输出
mysql
的库文件给系统库查找路径:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
而后让系统重新载入系统库:
# ldconfig
9
、修改
PATH
环境变量,让系统所有用户可以直接使用
mysql
的相关命令
:
vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
(重新登录系统即可生效)
在企业应用中,由于数据库中的数据变化量是很大的,为了方便管理,我们可以把数据库放在一个逻辑卷上,可以很方便的扩展或缩减其空间大小,利用管理。
首先进行分区,用作物理卷的分区的
id
为
8e
,大小为
10G,
我们这里以创建分区
/dev/sda3
为例:
#fdisk /dev/sda
让
kernel
识别新建的分区:
#partprobe /dev/sda
创建物理卷:
#pvcreate /dev/sda3
创建卷组:
#vgcreate myvg /dev/sda3
创建逻辑卷
;
#lvcreate -L 5G -n lv_mydata myvg
格式化逻辑卷:
#mke2fs -j /dev/myvg/lv_mydata
逻辑卷的挂载目录为
/mydata,/mydata/data
目录来存放
mysql
的数据
:
#mkdir -p /mydata/data
使逻辑卷开机自动挂载:
#vim /etc/fstab
添加如下行:
/dev/myvg/lv_mydata /mydata ext3 defaults 0 0
挂载
/etc/fstab
中的文件系统:
#mount -a
接下来就可以安装上面的过程进行处理。
主主搭建配置:
这里我们的主主架构为
192.168.1.181 192.168.1.182
在
192.168.1.181
服务器上执行以下:
vim /etc/my.cnf
[mysqld]
server-id = 11
log-bin = mysql-bin
auto-increment-increment = 2
auto-increment-offset = 1
relay-log=mysql-relay
relay-log-index=mysql-relay.index
mysql>grant replication client,replication slave on *.* to [email protected] identified by '135246';
mysql>flush privileges;
在
192.168.1.182
服务器上执行以下:
vim /etc/my.cnf
[mysqld]
server-id = 12
log-bin = mysql-bin
auto-increment-increment = 2
auto-increment-offset = 2
relay-log=mysql-relay
relay-log-index=mysql-relay.index
mysql>grant replication client,replication slave on *.* to [email protected] identified by '135246';
mysql>flush privileges;
如果此时两台服务器均为新建立,且无其它写入操作,各服务器只需记录当前自己二进制日志文件及事件位置,以之作为另外的服务器复制起始位置即可
192.168.1.181
上
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 360 | | |
+------------------+----------+--------------
192.168.1.182
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 107 | | |
+------------------+----------+--------------+------------------+
各服务器接下来指定对另一台服务器为自己的主服务器即可:
192.168.1.181
mysql>change master to \
master_host='192.168.1.182',
master_user='repl',
master_password='135246',
master_log_file='mysql-bin.000005',
master_log_pos=107;
192.168.1.182
mysql>change master to \
master_host='192.168.1.181',
master_user='repl',
master_password='135246',
master_log_file='mysql-bin.000004',
master_log_pos=360;
然后
mysql> start slave;
到此主主机构已经完成!
mysql>show tables
;
mysql> create table user( id int auto_increment, name varchar(20), primary key (id));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into user(name) values ('zhangsan'), ('lisi');
Query OK, 2 rows affected (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> insert into user(name) values ('zhang'), ('li');
Query OK, 2 rows affected (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select id from user;
+----+
| id |
+----+
| 1 |
| 3 |
| 5 |
| 7 |
+----+
mysql> show variables like '%auto_incr%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 2 |
| auto_increment_offset | 1 |
+--------------------------+-------+
2 rows in set (0.00 sec)
修改
AUTO_INCREMENT_OFFSET
值,改变自增器起始值
mysql > set auto_increment_offset=60;
Query OK, 0 rows affected (0.00 sec)
是否启用了日志