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

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)
 

是否启用了日志

你可能感兴趣的:(mysql,解决方案)