您的位置:首页 > 数据库 > MySQL

mysql主主搭建及问题解决方案

2012-07-23 09:38 134 查看
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 repl@192.168.1.182 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 repl@192.168.1.181 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)

是否启用了日志
mysql>show variables like 'log_%';
怎样知道当前的日志
mysql> show master status;
显示二进制日志数目
mysql> show master logs;
看二进制日志文件用mysqlbinlog
shell>mysqlbinlog mail-bin.000001
或者shell>mysqlbinlog mail-bin.000001 | tail
在配置文件中指定log的输出位置.
Linux 的配置文件为 my.cnf ,一般在 /etc 下。
在linux下:
Sql代码
# 在[mysqld] 中输入
#log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries= /usr/local/mysql/log/slowquery.log

# 在[mysqld] 中输入 #log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries=
/usr/local/mysql/log/slowquery.log

注:
在配置中会遇到的问题:
[root@www ~]# service mysqld restart
MySQL server PID file could not be
found! [FAILED]
这里由于数据时空的我采用的解决方案是:
cd /usr/local/mysql
[root@www mysql]#
./scripts/mysql_install_db --user=mysql --datadir=/mydata/data
Installing MySQL system tables...
120718 15:17:51 [Warning]
You need to use --log-bin to make --binlog-format work.
OK
Filling help tables...
120718 15:17:52 [Warning] You need to use
--log-bin to make --binlog-format work.
OK
当然由于此mysql以前做过mysql的从服务器所以出现warning
这里的解决方案是:
vim /etc/my.cnf
把原来注释掉的二进制日志打开即可

UTF-8是UNICODE的一种变长字符编码又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如日文,韩文)
这里我们将mysql的字符集修改为utf8
修改my.cnf配置文件在【mysqld】下加
character-set-server=utf8
本文出自 “雨季的问候” 博客,请务必保留此出处http://rain1118.blog.51cto.com/4350097/939519
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: