mysql

来源:互联网 发布:网络安全设备巡检流程 编辑:程序博客网 时间:2024/05/18 20:09


1安装mysql

1 )删除低版本的mysql服务

rpm  -e  - -nodeps mysql-server   mysql

rm  -rf  /etc/my.cnf

rm  -rf  /var/lib/mysql/*

2)新版本的mysql的安装、初始密码设置、登录和退出数据库

rpm  -q  mysql-server  mysql       (确定是未安装状态,因为要安装新版本的)

ls

MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar

tar -xf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar     (解包)

ls能查看到好多.rpm包

rpm  -Uvh  MySQL-*.rpm                      (升级安装所有的rpm包)

service mysql  start                             (启动服务,新版本不加d)

cat /root/.mysql_secret                 (别忘.了,查看装服务时生成的默认密码)

mysql -uroot  -p默认密码  + 回车       (用默认密码登录到服务器,再改密码)

mysql> set  password for  root@"localhost"=password("新密码");   设置密码

mysql>quit                                           退出登录数据库服务器

mysql  -uroot  -p新密码                             用新密码重新登录数据库

mysql  -uroot   -p密码  + 库名;                     登录后就直接进入该库

3)安装mysql后的配置文件

/var/lib/mysql                                   数据库目录

/etc/my.cnf                                     数据库主配置文件

/root/.mysql_secret                             初始默认密码文件

4)登录数据库后,对库的操作:查看库,查看当前所在库,切换库,创建库,删除库

show databases;                               查看库,显示当前已有的库

use  库名;                                  切换到该库

select  database();                         查看当前所在库

create database   数据库名;                   创建数据库

drop database  数据库名;                      删除库

5)数据库里表的操作:在库里查看所列的所有表,查看表结构,查看某表的所有记录内容,查看某表指定字段的记录内容,在当前库中创建表,在指定库中创建表,删除当前库的表,删除其他库的表,删除表中所有内容,删除表中某个字段内容

show tables;                                            看当前库的表名

desc  表名;                                            查看表结构

select  *  from  表名(\G);                            查看该表所有列的内容

select  列名1,列名2,列名N,……  表名;               查看表中指定列的内容

create table  表名 (字段名  类型() 约束条件);         在当前库中创建表

create table  库名.表名 (字段名 类型( ) 约束条件);     在指定库中创建表

drop  table  表名;                                      删除当前库的表

drop  table  库名.表名;                               删除其他库的表

delete  from 表名 where 字段名=……;            删除表中某个字段某行的内容

delete  from  表名;                          删除表中所有内容,不是删除表

2 mysql的数据类型

1)字符类型

如:工作单位、姓名等

char   定长 (0-255)

varchar   变长(255-65535)

2)数值类型(又包括整数型和小数型)如:升高、体重等

整数型:(又分为:微小整数、小整数、中整数、大整数(INT重点)、极大整数)

小数型(FLOAT和DOUBLE)

float                            4字节      单精度浮点型数

double                          8字节     双精度浮点型数

float(N,M)                 (N:数的总的位数,M:小数位的位数)

float(4,2)                 表示的数的范围是:-99.99到99.99之间范围的数

float(7,2)               表示的数的范围是:-99999.99到99999.99范围的数

3)日期时间类型(如:生日、入职时间等)

创建日期时间类型的表时,给字段赋值时候,下列的字段名和对应的格式必须要位数对应一致。

year                                  如:2015

date                                  如:2015-06-02

time                                  如:17:15:20

datetime                              如:2015-06-02  17:30:00

获取系统时间/年/月/日/时间

select  now ();         获取系统时间

select  year  (now());   获取系统时间中的年份

Select  month  (now());  获取系统时间中的月份

select  day  (now());     获取系统时间中的日

select  time  (now());   获取系统时间中的时间

4)枚举类型:字段的值只能在列举的范围内选择。

enum (值1,值2,……,值N)  选择列举范围内一个

set (值1,值2,……,值N)  选择列举范围内一个或多个

约束条件和default默认值

限制如何给字段赋值,创建表时若不设置就使用mysql建表时的默认设置(NULL/null),在不设置约束条件时,默认允许字段内容为空NULL/null。

create  table  表名  (字段名varchar(15)  not  null);         不允许字段为空

insert  into  表名  values  (null);                       给表赋空值

insert  into  表名  values  ("null");         这个不是赋空值,这个null时普通字符

insert into 表名 values ("");                    这个也不是赋空值,这个是空格

select  *  from  表名  where  字段名  is  null/NULL      查询字段名空值

default默认值

当向表中插入新的记录时,若不给字段赋值,就使用默认值给字段赋值,建表时若没有设置字段的默认值是什么,mysql把字段的默认值设置为空。设置default值要与对应类型匹配。

mysql> create  table  biao2(

    -> name  varchar (5),

->age  int (3)  default 21,

->sex  enum (“boy”,”girl”)  default “girl”

    -> );

3 mysql表的增删该查

1)添加字段

添加一个新字段: (默认添加到表的最下方)

alter table  表名  add  字段名  类型(宽度)  约束条件;

添加多个新字段:  (默认添加到表的最下方)

alter table  表名  add  字段名1 类型(宽度) 约束条件,add  字段名2  类型(宽度) 约束条件,…;

在指定字段名下方添加字段: (after 指定字段名)

alter table  表名  add  字段名  类型(宽度)  约束条件  after  指定字段名;

在所有字段名上方(首位)添加字段:  ( first)

alter table  表名   add  字段名  类型(宽度)  约束条件   first;

2)删除字段

删除一个字段:

alter table  表名  drop  字段名;

删除多个字段:

alter table  表名  drop  字段名1,drop  字段名2,……;

mysql> alter  table  biao1 drop  age;

mysql> alter  table  biao1 drop  age,drop  love;

3)修改已有字段类型:

alter table  表名  modify  字段名  新类型(宽度) 约束条件;

mysql> alter  table  biao1  modify id  smallint (5);

4)修改字段名:change 修改字段名的同时也可根据需要修改类型(宽度),约束条件等。

alter table  表名  change  原字段名   新字段名  类型(宽度)  约束条件

5)修改表名:rename

alter  table  旧表名   rename  新表名;

如:

mysql> alter  table  biao1 rename  xinbiao;

6)复制表及内容

create  table  新表名  select  * from  要复制的原表名;

如:

mysql> create  table  xinbiao2 select  *  from  xinbiao;

7)只复制表的结构,不复制内容,得到空表

create table  新表名  select  * from  原表名  where  任意一个字段名  is  null;

mysql> create table  xinbiao3  select *  from  xinbiao where  name  is null;

 

 

 

 

 

 

 

 

mysql的索引

1设置字段的index索引

1)把原有表已有字段设置为index索引

create index  索引名  on  表名(字段名);

如:mysql> create  index name  on  biao1 (name);

2)创建新表时把字段设置为index索引

如:

mysql> create  table biao2 (

   -> name  varchar (5),

   -> age  int (3),

   -> sex  enum("girl","boy"),

   -> index  (name),

   -> index  (age)

   -> );

3)查看字段的index索引

show index   from  表名;

如:mysql> show  index from  biao2;

4)删除字段的index索引

drop index   索引名  on  表名;

mysql> drop  index name  on  biao2;

2创建unique索引:一般把索引名设置成和字段名相同

1)在已有表中创建unique索引:

create unique   index   索引名   on  表名(字段名);

如:mysql> create  unique index  name  on biao3  (name);

2)创建新表时创键unique索引:

如:

mysql> create  table biao4 (

   -> id  int (3),

   -> name  varchar (5),

   -> age  int (3),

   -> sex  enum("girl","boy"),

   -> unique  (id),

   -> unique  (name)

   -> );

3)查看/删除unique索引和查看/删除index索引的命令一样

查看字段的unique索引:

show index   from  表名;

如:mysql> show  index from  biao4;

4)删除字段的unique索引

drop index   索引名  on  表名;

如:

mysql> drop  index name  on  biao4;

 

 

3 创建主键索引 primary  key

1)在已有表中创建主键索引:

alter table  表名  add   primary key(字段名);

如:

mysql> alter  table biao4  add  primary key (name);

2)创建新表时创建主键索引:

mysql> create  table biao5 (

   -> id  int (2),

   -> name  varchar (6),

   -> age  int (3),

   -> sex  enum("gril","boy"),

   -> primary  key (id)

   -> );

另一种形式也可:

mysql> create  table biao6 (

   -> id  int (4),

   -> name  varchar (6)  primary key,

   -> age  int (2)

   -> );

3)查看主键primary  key

通过 :desc 表名,查看有PRI的标志即是主键。

4)删除主键primary  key

alter  table  表名  drop  primary key;

mysql> alter  table  biao5  drop primary  key;

5)主键与auto_increment连用,使字段自动增长,每次都自加1

mysql> create  table biao9 (

    -> id int (2)  primary  key auto_increment,

   -> age  int (3),

   -> name  varchar (5),

   -> sex  enum("boy","girl")

   -> );

6)删除自动增长的主键,必须先去掉自动增长

去掉自动增长:

alter table   表名  modify  字段名  ……;后面的根据需要修改,不加auto_increment

如:alter table   t29  modify id  int(2)  not  null;

再删除主键:

alter table  表名  drop  primary key;

如:alter table  t29  drop primary  key;

7)添加的字段让其直接指定添加在首位并让他自动增长

alter  table  表名  add  字段名  类型(宽度) primary  key auto_increment first;

如:

mysql> alter  table  biao10  add  id  int (2)  primary  key  auto_increment first;

 

4存储引擎的查看、创建、修改

1)查看表的存储引擎(在创建表的过程中查看)

mysql> show  create  table 表名;

如:mysql> show  create  table  biao10;

2)创建新表时设置存储引擎为myisam并设置成支持汉语(例子1,初认识)

mysql> create  table  biao11(

   -> name  varchar (5),

   -> age  int (2)

   -> )engine=myisam  default  charset=utf8;

创建新表时设置存储引擎为myisam并设置成支持汉语(例子2,更完善)

mysql> create  table  biao12 (

   -> 姓名  varchar(20),

   -> 年龄  int(5),

   -> 性别  enum("男","女")

-> )engine=myisam  default  charset=utf8;

3)修改表的存储引擎(和设置支持语言)

mysql> alter  table  表名  engine=存储引擎类型;

mysql> alter  table  表名 engine=存储引擎类型  default  charset=语言类型;

5外键:foreign  key

让当前表中外键字段的值,只能在指定的另一个表的某个字段值的范围内选择。两个表相互关联。

外键使用规则:

1)表的存储引擎必须是innodb

2)字段的类型要匹配

3)被参考字段必须是键值中的一种,通常设置为主键

创建员工信息表(父表)和员工工资表(子表),子表中设置外键,使子表和父表成为关联表,有员工信息加入员工信息表时才能给员工发工资,否则不能发,当员工信息表的编号改变时,员工工资表的编号自动跟着改变,当员工信息表内容删除后,员工工资表内容也自动删除,删除父表时,需要先删除外键,才能删除父表,否则不可以。

1)创建员工信息表和员工工资表,并给员工信息表里的员工的对应的工资表赋值

mysql> create  table  yg_info(

   -> yg_id  int (2)  primary key  auto_increment,

   -> name  varchar (10)

   -> );

mysql> create  table  yg_gz (

   -> gz_id  int (2)  not null,

   -> gz  float (7,2),

   -> foreign  key (gz_id)  references  yg_info (yg_id)  on  update cascade  on  delete cascade

   -> );

 

 

 

 

修改默认的存储引擎:             

vim  /etc/my.cnf

[mysqld]

default-storage-engine=myisam/innodb     添加(修改成需要的存储引擎)

wq

/etc/init.d/mysql  restart                 重启服务

数据导入把系统文件的内容保存到数据库服务器的表里:

load  data  infile“要导入的文件” into table  数据库.表名 fields  terminated by":"  lines  terminated  by  "\n";

数据导出:把数据库表里记录保存到系统文件里:

select  *  from  数据库.表名 into  outfile  '导出文件的存放位置';

表记录的基本操作(增、删、改、查)

1)查(select)(查询全部记录和查询指定字段记录)

select 字段名列表 from   表名  where  条件表达式;

select *  from  usertab where  uid=0;

select username,shell,uid  from  usertab where  uid  in (10,0,500);

select username,shell,uid  from  usertab where  uid  between 10  and  20;

select username,uid from usertab whereusername="root" or uid=0 or shell="/bin/bash";

select  username  from  usertab where  username  like  '__ _';

select  username  from  usertab where  username  regexp  '[0-9]';

2)update 改(单个修改和批量修改)

批量修改:

update 数据库名.表名  set  字段名1=值1,字段名2=值2,……;

3)删除:delete 

删除时以行为单位,删除的是整条记录。

删除所有记录:

或delete from  数据库.表名;

删除指定记录:

delete from  数据库.表名 where  条件表达式;

4)添加记录:insert

给指定字段赋值:

insert into  表名(字段名1,字段名2,……)values(值1,值2,……);

给所有字段赋值:

insert into  表名  values(值1,值2,……)

5)select查询时排序:order  by         asc(默认):升序     desc:降序

升序排列:

select 字段名1,字段名2,…  from  表名   order  by  某字段  asc;

降序排列:

select 字段名1,字段名2,…  from  表名   order  by  某字段  desc;

查询时分组: group  by  字段名

select 某字段名 from  表名  group by  该字段名;

查询时limit 限制显示记录的条目数

select  字段名1,字段名2,…… from  表名  limit N,M;

select  * from  表名  limit  N,M;

1知道旧密码时,修改数据库管理员密码(在命令行下操作)

[root@svr5 /]# mysqladmin  -hlocalhost -uroot  -p  password 新密码

输入旧密码后,回车即可

2不知道旧密码时,恢复数据库管理员初始默认密码后再设置新密码

service mysql  stop                                   停止服务

service mysql  start  --skip-grant-table               跳过授权表登录

mysql                                                  登录

mysql> select user,host,password frommysql.user;      查看保存密码的表mysql.user

mysql> update  mysql.user

   -> set  password=password("tarena")

   -> where  host="localhost";                       设置新密码

mysql> flush  privileges;                              更新手动设置的密码

quit

mysql -uroot  -ptarena                           退出后用新密码重新登录

3数据库的授权和撤销授权:在登录服务器状态下进行

grant 权限列表  on   数据库名.表名  to   用户名@”客户端地址”;

grant 权限列表  on   数据库名.表名  to   用户名;

grant 权限列表 on  数据库名.表名  to  用户名@”客户端地址”  indentified  by  “密码”  with  grant option;

grant all  on  *.* to  root@"192.168.4.205"  identified by  "123"  with grant option;

grant all  on  *.* to  jim@"192.168.4.%";

grant all  on  *.* to  jim;

revoke 权限列表 on  数据名.表名  from  用户名@”客户端地址”;

revoke delete  on  *.* from  root@”192.168.4.205”;

4在命令行下:完全备份和恢复:(mysqldump命令,在命令行下执行完全备份,必须以.sql结尾)

mysqldump -u用户名  -p密码  要备份的数据库名  >  xx.sql    (备在当前目录)

mysqldump -u用户名  -p密码  要备份的数据库名  > 目录路径/xx.sql  (备在指定目录)

mysqldump备份时要注意:备份一个库还是多个库 

数据库名                     备份数据库服务器上的某个库的某个表的所有数据

-B  数据库名1  数据库名2  …     备份数据库服务器上的某几个库的所有数据

一般情况下,备份一个库时,xx.sql里没有create  database,需要指定数据库名;

备份多个库时,xx.sql里有create  database,不能指定数据库名。

数据恢复(两种格式,加数据库名和不加数据库名)

加数据库名:当备份文件xx.sql里没有createdatabase的sql语句时,恢复数据时要指定数据库名

不加数据库名:当备份文件xx.sql里有create  database的sql语句时,恢复数据时,不能指定数据库名

mysql  -u用户名   -p密码   数据库名  <   目录路径/xx.sql

mysql  -u用户名   -p密码     <   目录路径/xx.sql

  

 

binlog日志记录sql语句

1启用binlog日志         日志的存储位置:默认在:/var/lib/mysql/

vim /etc/my.cnf

[mysqld]

log-bin                   添加

wq

2 binlog日志记录sql语句的方式 (字符偏移量(pos)和时间点(time))

通过字符偏移量查看binlog日志:

mysqlbinlog  - -start-position=1022   - -stop-position=2086  svr5-bin.000001

mysqlbinlog  - -stop-position=2086  svr5-bin.000001

mysqlbinlog   svr5-bin.000001

通过时间点方式查看binlog日志:

mysqlbinlog   - -start-datetime=”yyyy-mm-dd  hh:mm:ss”  svr5-bin.000001

mysqlbinlog   - -stop-datetime=”yyyy-mm-dd  hh:mm:ss” svr5-bin.000001

执行binlog日志里的sql语句恢复数据

mysqlbinlog  选项   svr5-bin.000001  | mysql  -uroot  -p123 [数据库名]

3手动生成binlog日志的方式

1)重启数据库服务,可以生成新的binlog日志,service  mysql restart

2)在登录mysql状态下,生成新的binlog日志: mysql>flush  logs; 

                             每执行一次就生成一个新的binlog日志

3)在命令行下生成新的binlog日志: 

mysql -uroot  -p123  -e  “sql命令”如:mysql  -uroot -p123  -e  “flush  logs”

4)完整备份数据后又让它生成新的binlog日志

命令行下:mysqldump -uroot  -p123  - -flush-logs 数据库名 > xxx.sql

4删除已有的binlog日志文件

1)删除所有的binlog日志文件,恢复到最初的编号000001,  xx.00000x和xx.index同步更新:

mysql>reset  master;

2)删除指定binlog日志编号之前的所有binlog日志(xx.00000x和xx.index同步更新):

mysql> purge  master logs  to  “某编号的binlog日志”

如:mysql>purge  master logs  to  “svr5-bin.000004”; (000004编号之前的全删了)

3)手动删除binlog日志:xx.00000x和xx.index不同步,需把这两种类型文件都删除。

如:rm -rf  svr5-bin.000004后,     svr5-bin.index不会跟着一块删

 

 

 

 

 

 

 

 

 

 

 

 

xtrabackup软件备份

xtrabackup软件的安装

[root@svr5 opt]# rpm -ivhpercona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm

有依赖包,用yum把依赖包安上

完整备份:

[root@svr5 ~]# xtrabackup_56  - -backup - -datadir=/var/lib/mysql/

- -target-dir=/xbackupdir

第一次增量备份:

[root@svr5 db1]# xtrabackup_56  - -backup - -datadir=/var/lib/mysql/

- -incremental-basedir=/xbackupdir  - -target-dir=/xbackupdirnew1

第二次增量备份:

[root@svr5 xbackupdirnew1]#xtrabackup_56  - -backup  - -datadir=/var/lib/mysql/ 

--incremental-basedir=/xbackupdirnew1   --target-dir=/xbackupdirnew2

完全恢复:

[root@svr5 xbackupdirnew2]#xtrabackup_56   - -prepare   - -datadir=/var/lib/mysql/  - -target-dir=/xbackupdir

[root@svr5 xbackupdir]# cp/xbackupdir/db1/biao1.ibd /var/lib/mysql/db1/

第一次增量恢复:

[root@svr5 xbackupdir]# xtrabackup_56   - -prepare  - -datadir=/var/lib/mysql/

- -target-dir=/xbackupdir  - -incremental-dir=/xbackupdirnew1/

[root@svr5 xbackupdir]# cp/xbackupdir/db1/biao1.ibd /var/lib/mysql/db1/

第二次增量恢复:

[root@svr5 xbackupdir]# xtrabackup_56  - -prepare - -datadir=/var/lib/mysql/

- -target-dir=/xbackupdir   - -incremental-dir=/xbackupdirnew2

[root@svr5 xbackupdir]# cp  /xbackupdir/db1/biao1.ibd  /var/lib/mysql/db1/

mysql的主从配置,使得192.168.4.5服务器和192.168.4.205服务器互为主从结构

主mysql服务器上(192.168.4.5上)

[root@svr5 ~]# vim  /etc/my.cnf

[mysqld]

log-bin                           (添加,开启binlog日志,后面跟值不跟都可)

server_id=5                       (添加,指定自己的server_id值,多少随便)

log_slave_updates                 (添加,链接复制功能,根据需要决定是否添加)

从mysql服务器上(192.168.4.205上)

[root@pc205 ~]# vim  /etc/my.cnf

[mysqld]

log-bin                          (添加,开启binlog日志,后面跟值不跟都可)                  

server_id=205                    (添加,指定自己的server_id值,多少随便)           

log_slave_updates                 (添加,链接复制功能,根据需要决定是否添加)

 

 

 

 

 

 

vim /shell/allbak.sh      写完全备份脚本

vim /shell/zengliang.sh  写增量备份脚本

                只备份新生成的和没备份的,binlog日志里正在使用的不备份

 

 

 

 

 

 

 

mysql-mmm软件

用mysql-mmm部署mysql服务器的虚拟IP,配合主从同步,搭建mysql高可用集群

1做192.168.4.5和192.168.4.205互为主从,并让192.168.4.100和192.168.4.200做192.168.4.205的从,注意要在192.168.4.205上开启齐连复制功能log_slave_updates

5台机器的公共配置:

关闭iptables

关闭selinux

配置yum源

能互相ping通

都运行mysql都只有默认的4个库

192.168.4.5上:

安装高版本的mysql服务器:

tar - xf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar

rpm -Uvh  MySQL-*

vim /etc/my.cnf

log-bin                                      (添加)

server_id=5                                  (添加)

service mysql  start

cat /root/.mysql_secret

# The random password set for the rootuser at Thu Jun 11 03:45:11 2015 (local time): JpytK7mI

mysql -uroot  -pJpytK7mI

mysql> set  password for root@"localhost"=password("123");

mysql -uroot  -p123

mysql> show  master status;

+-----------------+----------+--------------+------------------+-----------

| File            | Position | Binlog_Do_DB |Binlog_Ignore_DB | Executed_Gtid_Set |

+-----------------+----------+--------------+------------------+-----------

| svr5-bin.000001 |      262 |              |                  |                   |

+-----------------+----------+--------------+------------------+-----------

mysql> grant  replication slave on  *.*  to slaveuser@"%"  identified by  "123";

192.168.4.205上:

tar -xf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar

rpm -Uvh  MySQL-*.rpm

vim /etc/my.cnf

log-bin                                           (添加)

server_id=205                                     (添加)

log_slave_updates                                 (添加)齐连赋值功能

service mysql  start

cat /root/.mysql_secret

# The random password set for the rootuser at Thu Jun 11 03:46:06 2015 (local time): lHPQXkE3

mysql -uroot  -plHPQXkE3

mysql> set  password for  root@"localhost"=password("123");

[root@pc205 ~]# mysql  -uroot -p123

mysql>change   master  to

master_host="192.168.4.5",master_user="slaveuser",master_password="123",

master_log_file="svr5-bin.000001",master_log_pos=262;

mysql> start  slave;

mysql> show  slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

mysql> grant  replication slave  on  *.*  to  slaveuser@"%"  identified by "123";

mysql> show  master status;

+------------------+----------+--------------+------------------+----------

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB| Executed_Gtid_Set |

+------------------+----------+--------------+------------------+----------

| pc205-bin.000001 |      668 |              |                  |                   |

+------------------+----------+--------------+------------------+----------

再在192.168.4.5上:

mysql>change  master to

master_host="192.168.4.205",master_user="slaveuser",master_password="123",

master_log_file="pc205-bin.000001",master_log_pos=668;

mysql> start  slave;

mysql> show  slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

192.168.4.100上:(4.205的从)

tar -xf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar

rpm -Uvh  MySQL-*.rpm

vim /etc/my.cnf

server_id=100                      (添加)

log-bin                           (添加,也可不添加)

service mysql  start

cat /root/.mysql_secret

# The random password set for the rootuser at Thu Jun 11 04:27:40 2015 (local time): JOPLJQAT

mysql -uroot  -pJOPLJQAT

mysql> set  password for root@"localhost"=password("123");

mysql -uroot  -p123

mysql>change  master to

master_host="192.168.4.205",master_user="slaveuser",master_password="123",

master_log_file="pc205-bin.000001",master_log_pos=668;

mysql> start  slave;

mysql> show  slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

192.168.4.200上:(4.205的从)

tar -xf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar

rpm -Uvh  MySQL-*.rpm

vim /etc/my.cnf

server_id=200               (添加)

log-bin                     (添加,可不添加)

service mysql  start

cat /root/.mysql_secret

# The random password set for the rootuser at Thu Jun 11 04:29:12 2015 (local time): M9bQrRDJ

mysql -uroot  -pM9bQrRDJ

mysql> set  password for root@"localhost"=password("123");

mysql -uroot  -p123

mysql>change  master to

master_host="192.168.4.205",master_user="slaveuser",master_password="123",

master_log_file="pc205-bin.000001",master_log_pos=668;

mysql> start  slave;

mysql> show  slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2在所有的机器上安装mysql-mmm软件(所有机器都做相同的操作)

规划: 主主数据库服务器(192.168.4.5和192.168.4.205)使用的虚拟IP:192.168.4.99  (写的虚拟IP)另外两台读的虚拟ip如下:

192.168.4.201   read     ,  192.168.4.202   read

tar -zxf mysql-mmm.tar.gz

1)安装编译程序和perl程序:

yum -y  install  gcc make  gcc-c++

yum -y  install  *perl*

2)安装mysql-mmm依赖的软件包:

Algorithm-Diff-1.1902.tar.gz

Net-ARP-1.0.8.tgz

perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm

Proc-Daemon-0.03.tar.gz

tar -zxf  Algorithm-Diff-1.1902.tar.gz

cd Algorithm-Diff-1.1902

perl  Makefile.PL

make &&  make  install

gzip -d  Net-ARP-1.0.8.tgz

tar -xf  Net-ARP-1.0.8.tar

cd Net-ARP-1.0.8

perl Makefile.PL

make &&  make  install

rpm -ivh perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm

tar -zxf  Proc-Daemon-0.03.tar.gz

cd Proc-Daemon-0.03

perl Makefile.PL

make &&  make  install

3)安装mysql-mmm

tar -zxf  mysql-mmm-2.2.1.tar.gz

cd mysql-mmm-2.2.1

make install

上面操作可以写成一个脚本:在其他机器上一次执行脚本即可,都要安装mysql-mmm

3 在所有的机器上配置主机名映射(所有机器做相同的操作)

vim /etc/hosts

192.168.4.250     monitor.tarena.com       monitor

192.168.4.5       master5.tarena.com       master5

192.168.4.205     master205.tarena.com     master205

192.168.4.100     slave100.tarena.com      slave100

192.168.4.200     slave100.tarena.com      slave200

 

 

 

 

 

4 在所有的机器上编辑配置文件: /etc/mysql-mmm/mmm_common.conf

5所有被监控的mysql服务器上都要编辑配置文件/etc/mysql-mmm/mmm_agent.conf

(监控那台设置虚拟IP的机器不需要编辑)

192.168.4.5上:

vim /etc/mysql-mmm/mmm_agent.conf

this master5                                (添加,指定自己的主机名)

192.168.4.205上:

vim /etc/mysql-mmm/mmm_agent.conf

this master205

192.168.4.100上:

vim /etc/mysql-mmm/mmm_agent.conf

this slave100

192.168.4.200上:

vim /etc/mysql-mmm/mmm_agent.conf

this slave200

6 在4台mysql服务器上授权有监视权限的和代理权限的用户(4台做下面同样的操作)

mysql> grant replication  client  on *.*  to  monitor@"%"  identified by  "monitor";

mysql> grant replication  client  on *.*  to  agent@"%"  identified by  "agent";

7 在监控服务器上(mysql-mmm)删编辑配置文件/etc/mysql-mmm/mmm_mon.conf

(其他mysql服务器不需要配置)

vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf

<monitor>

ip                192.168.4.250                    (监控服务器的IP)

pid_path          /var/run/mmm_mond.pid          (pid号,默认)

bin_path          /usr/lib/mysql-mmm/              (命令所在路径,默认)

status_path      /var/lib/misc/mmm_mond.status     (状态所在路径,默认)

ping_ips     192.168.4.5,192.168.4.205,192.168.4.100,192.168.4.200  

                                                     (要监控的机器的IP) 

</monitor>

<host default>

  monitor_user        monitor        (有监视权限的用户名,之前授权设置的)

  monitor_password    monitor        (有监视权限的密码,之前授权设置的)

</host>

 debug 0                  (值为1表示输出调试信息,为0表示不输出调试信息)

8 在对应角色服务器上启动对应的服务

启动所有mysql服务器上的代理进程:

192.168.4.5上:

 /etc/init.d/mysql-mmm-agent  start

Daemon bin: '/usr/sbin/mmm_agentd'

Daemon pid: '/var/run/mmm_agentd.pid'

Starting MMM Agent daemon... Can't locateDBI.pm in @INC (@INC contains:………如果有依赖包,装不上,就先在光盘里查出该依赖包,装上后再启动

/mnt/Packages/  | grep  -i  dbi

perl-DBI-1.609-4.el6.x86_64.rpm

perl-DBIx-Simple-1.32-3.el6.noarch.rpm

yum -y  install  perl-DBI

/etc/init.d/mysql-mmm-agent start

netstat -anptu  |  grep :9989

192.168.4.205上:

/etc/init.d/mysql-mmm-agent  start

192.168.4.100上:

/etc/init.d/mysql-mmm-agent  start

192.168.4.200上:

/etc/init.d/mysql-mmm-agent  start

启动监控主机上的监控进程

192.168.4.250上:

/etc/init.d/mysql-mmm-monitor  start

 

 

 

 

验证:有没有把虚拟IP部署上

在监控服务器上验证:

mmm_control  show                            查看各机器状态

mmm_control  set_online master5              激活该角色机器

mmm_control  set_online master205

mmm_control  set_online slave100

mmm_control  set_online slave200

mmm_control  show                        虚拟IP部署在了4.5上

当192.168.4.5机器故障时,虚拟IP会自动部署在192.168.4.205上

mmm_control  set_offline master5

mmm_control  show          虚拟IP自动部署在192.168.4.205上

到192.168.4.205上查看是否有虚拟IP:ip  addr  show 能查看成功,说明部署成功

   

 

 

 

0 0