系统:CentOS7.2
安装目录:/usr/local/mysql-5.7.25
数据目录:/data1/mysql/data/3306
1.mysql二进制安装包下载
https://downloads.mysql.com/archives/get/file/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
2.解压并将文件拷贝到/usr/local目录
>tar zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
>mv mysql-5.7.25-linux-glibc2.12-x86_64 /usr/local/mysql-5.7.25
3.新建mysql用户组、mysql用户和权限
>groupadd mysql
>useradd -g mysql -r -s /sbin/nologin -M -d /data1/mysql/data/3306 mysql
>chown -R mysql:mysql /usr/local/mysql-5.7.25
>mkdir -p /data1/mysql/data/3306
>chmod -R 770 /data1/mysql/data/3306
>chown -R mysql:mysql /data1/mysql/data/3306
4.初始化mysqld
>cd /usr/local/mysql-5.7.25
>./bin/mysqld --user=mysql --datadir=/data1/mysql/data/3306 --basedir=/usr/local/mysql-5.7.25 --initialize
初始化完成会生成一个初始化密码,请保存好,后续使用
[Note] A temporary password is generated for root@localhost: AuutOr)Mq2sy
5.编辑my.cnf文件及将mysq服务脚本放到系统服务中,配置环境变量让系统可以直接使用mysql的相关命令
>cp support-files/mysql.server /etc/init.d/mysqld
>ldconfig
>vi /etc/profile 最下面添加一行
export PATH=/usr/local/mysql-5.7.25/bin:$PATH
>source /etc/profile
>chkconfig mysqld on
>vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql-5.7.25
datadir=/data1/mysql/data/3306
port=3306
socket=/data1/mysql/data/3306/mysql.sock
max_connections=2000
character_set_server=utf8mb4
user=mysql
#MySQLid 后面从服务器需设置不同
server_id=2
启动mysql
>service mysqld start
6.修改密码
>mysql -uroot -h 127.0.0.1 -pAuutOr)Mq2sy #这里密码是上面初始化密码
mysql>set password='123456';
mysql>flush privileges;
设置远程可以访问mysql
mysql>update user set host='%' where user='root';
mysql>flush privileges;
以上配置主从都是一样,server_id不同即可
7.mysql主从配置(异步同步)
master配置
master上开启binlog日志
>vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql-5.7.25
datadir=/data1/mysql/data/3306
port=3306
socket=/data1/mysql/data/3306/mysql.sock
max_connections=2000
character_set_server=utf8mb4
user=mysql
###
#MySQLid 后面从服务器需设置不同
server_id=1
#打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径
log-bin=mysql-bin
#要给从机同步的库
#binlog-do-db=
#不给从机同步的库(多个写多行)
#binlog-ignore-db=
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#自动清理 7 天前的log文件,可根据需要修改
expire_logs_days=7
重启数据库
>service mysqld restart
测试log_bin是否成功开启
>mysql -uroot -h 127.0.0.1 -p123456
mysql> show variables like '%log_bin%';
master的数据库中建立备份账号:backup为用户名,%表示任何远程地址,如下表示密码为123456的任何远程地址的backup都可以连接master主机
mysql> grant replication slave on *.* to 'backup'@'%' identified by '123456';
mysql> use mysql;
mysql> select user,authentication_string,host from user;
拷贝数据
重启mysql服务并设置读取锁,读取锁定目的是只能读取,不能更新,以便获得一个一致性的快照
mysql>show master status\G #
查看主服务器上当前的二进制日志名和偏移量值这里的file 和position 要和从上的一致
salve配置
>vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql-5.7.25
datadir=/data1/mysql/data/3306
port=3306
socket=/data1/mysql/data/3306/mysql.sock
max_connections=2000
character_set_server=utf8mb4
user=mysql
###
#MySQLid 后面从服务器需设置不同
server_id=2
###
#加上以下参数可以避免更新不及时,slave重启后导致的主从复制出错。
read_only = 1
master_info_repository=table
relay_log_info_repository=table
#relay_log_recovery=1 #从机禁止写
#super_read_only=1 #从机禁止写
重启slave数据库
>service mysqld restart
登录slave数据库,并做如下设置
>mysql -uroot -h 127.0.0.1 -p123456
mysql>stop slave;
mysql>change master to
->master_host='192.168.1.2', #master的ip
->master_user='backup', #备份用户名
->master_password='123456', #密码
->master_log_file='mysql-bin.000001', #上面截图,且要与master的参数一致
->master_log_pos=9084967; #上面截图,且要与master的参数一致
mysql> start slave;
查看slave从机的状态 图中2个yes 代表设置成功
mysql> show slave status \G
关闭掉主数据库的读取锁定,并测试
mysql> unlock tables;