您的位置:首页 > 运维架构 > Linux

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

2018-03-29 12:06 337 查看
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;



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



发现能看到创建的表,表示成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息