linux centos7 下 配置 mysql5.6主从复制

mysql5.6主从复制

 

一、实验环境

Centos7x64

Mysql5.6.33

 

二、安装mysql

1、  卸载mariadb 连接远程终端。

#rpm -qa|grepmariadb  // 查询出来已安装的mariadb

#rpm -e --nodeps 文件名 // 卸载mariadb,文件名为上述命令查询出来的文件

2、  删除etc目录下的my.cnf

# rm/etc/my.cnf

3、  执行以下命令来创建mysql用户组

#groupaddmysql

4、  执行以下命令来创建一个用户名为mysql的用户并加入mysql用户组

# useradd -gmysql mysql

 5、安装

1下载安装包mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz

2上传mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz安装包到服务器

3解压

#tar–zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz

4复制或者转移一份到指定的路径

#mv   mysql-5.6.33-linux-glibc2.5-x86_64/usr/local/mysql

5切换到mysql目录

#cd/usr/local/mysql/

切换目录,并且安装

cdsupport-files/

复制my-default.cnf 到etc目录下

cpmy-default.cnf /etc/

重命名

mv my-default.cnf  my.cnf

6 修改配置文件

vimy.cnf

[mysql]

default-character-set=utf8     //置mysql客户端默认字符集

socket=/var/lib/mysql/mysql.sock  

port =3306

basedir= /usr/local/mysql

datadir= /usr/local/mysql/data

 

socket= /var/lib/mysql/mysql.sock

max_connections=200

character-set-server=utf8          //服务端使用的字符集默认为8比特编码的latin1字符集

default-storage-engine=INNODB     //创建新表时将使用的默认存储引擎

lower_case_table_name=1

max_allowed_packet=16M

 

7安装mysql

切换到mysql目录

cd/usr/local/mysql/

授予权限

chown-R mysql:mysql ./

 

安装

 

./support-files/mysql_install_db--user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

 

这个是会报错

原因是没有依赖包

安装依赖包

yuminstall -y autoconf

 

安装完 重新运行还是提示报错

再安装yum install libaio

重新运行


#chown -R mysql:mysql data 修改当前data目录的拥有者为mysql用户

 

这个时候已经安装完毕

 

9配置MySQL

给my.cnf授予运行权限。

#chown 777 /etc/my.cnf

 

10设置开机自启动服务控制脚本:

复制启动脚本到资源目录

#cp./support-files/mysql.server /etc/rc.d/init.d/mysqld

 

11增加mysqld服务控制脚本执行权限

#chmod+x /etc/rc.d/init.d/mysqld

 

12将mysqld服务加入到系统服务

#chkconfig--add mysqld

 

13检查mysqld服务是否已经生效

#chkconfig--list mysqld

命令输出类似下面的结果:

         mysqld 0:off 1:off 2:on 3:on 4:on 5:on6:off

表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制mysql的启动和停止

14service mysqld start  这时候可能会报错 以为环境变量没有设置好

 

15将mysql的bin目录加入PATH环境变量,编辑 ~/.bash_profile文件

#vim~/.bash_profile

在文件最后添加如下信息:

exportPATH=$PATH:/usr/local/mysql/bin

保存退出。

16执行下面的命令是修改的内容立即生效:

#source~/.bash_profile

 

17以root账户登录mysql,默认是没有密码的

#mysql-uroot –p

要输入密码的时候直接回车即可。

 

18设置root账户密码为root

mysql>usemysql;

mysql>updateuser set password=password('123') where user='root' and host='localhost';

mysql>flushprivileges;

 

置远程主机登录,注意下面的your username your password改成你需要设置的用户和密码(根据实际情况来定)

 

19mysql>GRANT ALL PRIVILEGES ON *.* TO 'yourusername'@'%' IDENTIFIED BY 'your password' WITH

GRANT OPTION;

 

安装完mysql 之后规划主从服务器。

1、

192.168.232.128

master_mysql

192.168.232.131

slave_mysql

 

1主服务器配置

#vi /etc/my.conf   添加如下内容

    log-bin=mysql-bin  开启binlog

    server-id =xxxx    服务器唯一标识,通常取网段值

    binlog_format=xxxx   xxxx=row|statement|mixed

*******************************************************************************

        row         数据集         主服务器数据发生了什么变化   从跟着发生   sql语句长  数据发生的变化小  row

                     示例:  update from stu setscore =61   where id =1  更新id=1的同学成绩字段

         statement   执行语法     主服务器执行了什么sql    从跟着执行     sql语句段  数据发生的变化大  statement

                    示例:     update  from user set password =123456   更新项目所有用户的默认登录密码为123456

         mixed       混合             让服务器自己决定采用什么方式

******************************************************************************

2给用户授权  3,grant 权限 on 哪个库.哪个表  to  用户@zhuji [identified by"密码"]

 

# grant all privileges on *.* to relay@192.168.232.131identified by 'relay';  

保存,然后启动主mysql #service mysqld start。

3修改从服务器:

# vi /etc/my.conf  添加如下内容

 

symbolic-links=0

server-id=20

log-bin=mysql-bin

binlog-format=mixed

relay-log=mysql-relay

 

添加完保存退出。

启动mysql  service mysqld start。

 

4从服务器对接主服务器

mysql> change master to

       master_host='192.168.232.128,

       master_user='relay',

       master_password='relay',

       master_log_file='mysql-bin.000001',

       master_log_pos=120;

 

mysql> start slave;  ##开启从库   (stop slave:关闭从库)

mysql> show slave status;###Slave_IO_Running,Slave_SQL_Running 都为Yes的时候表示配置成功

 

*****************************************************************************

第一次开始启动 slave的时候没有成功。


 

查看日志ssid 相同,因为我是装好了系统和mysql之后克隆系统的,所有问题在这。

 

The slave I/O thread stops because masterand slave have equal MySQL server UUIDs; these UUIDs must be different forreplication to work.

修改mysql data 目录下auto.cnf 文件中uuid的值,使两台mysql不同即可,修改后重启mysql服务。

 

 

然后重新运行发现还是连接不上,这个时候看日志文件报错。

Fatal error: The slave I/O thread stopsbecause master and slave have equal MySQL server ids; these ids must bedifferent for replication to work (or the --replicate-same-server-id optionmust be used on slave but this does not always make sense; please check themanual before using it).

 

意思是说 id重复了,所有修改配置文件里面的id号(vi /etc/my.conf)从新运行服务。问题解决.

 

5验证同步:

在主服务器上新建数据库和表

#create database relay default charsetutf8;   //新建数据库

 

 

create table tb_dept(      Id int primary key auto_increment,      Name varchar(18),      description varchar(100)  );    //新建表。

 

创建完使用命令;show databases; 创建成功。

 

选择数据库

Use relay;

#show tables;


 

同样的在从服务器使用相同的命令

 

发现能看到创建的表,表示成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值