环境说明
????????win10(mysql版本为mysql-5.5.48)做主库,在本机安装了一台虚拟机,里面装了linux(centos7)系统,mysql版本为mysql-5.5.48作为从库。
? ? ? ? 下面分为三个部分:1、介绍mysql在Linux的安装和配置 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2、介绍mysql在window的安装和配置 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3、主从同步需要的操作和配置。(如果本地自己装好了,可以直接看这里就行)
Linux安装中mysql
- ?下载两个rpm文件,MySQL-client-5.5.48-1.linux2.6.x86_64.rpm和MySQL-server-5.5.48-1.linux2.6.x86_64.rpm。
- 放到Linux的/root/Downloads目录下
-
//首先安装server,输入下面的指令
rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm 如果提示“GPD keys...”安装失败,解决方案:rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm --force --nodoeps(原因是有可能rpm安装的时候安装到旧版的GPD keys)
如果出现了冲突
先卸载原来的mariadb-libs-1:5.5.68-1.el7.x86_64, //删除原来的mariadb-libs-1:5.5.68-1.el7开头的库
yum -y remove mariadb-libs-1:5.5.68-1.el7* 卸载完后在重新安装一次
这次就正常了。 - 服务端安装完成后,安客户端
-
查看MySQL版本
mysqladmin --version
开启MySQL服务
service mysql start
关闭mysql服务
service mysql stop
重启MySQL服务
service mysql restart
启动服务:1.设置开机自启 chkconfig mysql on(打开), chkconfig mysql off(关闭) 检查开机是否自动启动:ntsysv - 安装完成后,直接输入mysql就可以登录了,我们现在要给mysql设置下密码,需要用到安装完成后提示的那两个指令
给mysql设置登录密码,用户名root,密码root
/usr/bin/mysqladmin -u root password root
?MySQL的一些信息?
数据库目录:--datadir=/var/lib/mysql。 pid文件目录:--pid-file=/var/lib/mysql/lxx02.pid。
MySQL核心目录: ????????????????/var/lib/mysql:MySQL安装目录。 ????????????????/usr/share/mysql:mysql配置文件目录。 ????????????????????????my-huge.cnf:高端服务器配置。 ????????????????????????my-large.cnf:中等服务器配置 ????????????????????????my-medium.cnf:一般 ????????????????????????my-small.cnf:较小 ? ? ? ? ? ? ? ? ? ? ? ? 以上配置文件mysql默认不能识别,默认只识别/etc/my.cnf。 ? ? ? ? ? ? ? ? ? ? ? ? 我们把my-huge.cnf复制一份到/etc/文件夹下,并改名为my.cnf。 ? ? ? ? ? ? ? ? /usr/bin:命令目录(mysqladmin,mysqldump等命令)
mysql配置:
查看mysql的字符编码
show variables like '%char%';
在/etc/my.cnf文件中[mysqld]标签下添加下面这些配置
character_set_server=utf8
character_set_client=utf8
collation_server=utf8_general_ci #排序方式
server-id=2 #设置从节点的id,不能跟别的mysql一样,主从同步要用
log-bin=mysql-bin #开启binlong
#在mysql客户端执行
#授权远程返回,这个命令有可能授权不了,如果错了在百度下别的命令,之前在安装遇到过这个问题
grant all privileges on *.* to 'root'@'192.168.1.%' identified by 'root' with grant option ;
#授权后刷新让立刻生效。
flush privileges;
上面改完重启mysql
service mysql restart
关闭Linux防火墙
service iptables stop;
重启后就可以在navicat上连接登录了
?
?window系统mysql下载与安装
下载地址:MySQL :: Download MySQL Community Server (Archived Versions)
?
?
选择自定义安装
?
选择自己想要的安装路径
?
?
直接启动MySQL配置,没有这个选项的话可以在mysql安装的bin目录下打开MySQLInstanceConfig.exe,下面配置的东西,一般都会放到:C:\ProgramData\MySQL\MySQL Server 5.5\my.ini这个文件中
?
?
?
?
?
?
?
?
?
?
?
?
?
?主从同步
先看下mysql主从同步原理
????????master将改变的数据记录到binary log中,然后会有专门的线程同步给slave,slave的io线程会把同步过来的数据记录到relay log日志中,relay log在从数据中做指令回放,从而达到主从一致。 ? ? ? ?
异步复制与半同步复制
异步复制:MySQL主从集群默认采用的是一种异步复制的机制。主服务在执行用户提交的事 务后,写入binlog日志,然后就给客户端返回一个成功的响应了。
?半同步复制:半同步复制机制是一种介于异步复制和全同步复制之前的机制。主库在执行完客 户端提交的事务后,并不是立即返回客户端响应,而是等待至少一个从库接收并写 到relay log中,才会返回给客户端。MySQL在等待确认时,默认会等10秒,如果超 过10秒没有收到ack,就会降级成为异步复制。
?
?MySQL binlog有三种模式:Row、Statement 和 Mixed 。
主库的配置
? ? ? ? windows:(mysql:my.ini)文件 ? ? ? ? linux:(mysql:my.cnf)文件
配置前记得检查权限,比如远程访问权限,和防火墙处理好。
?my.ini文件配置
#在[mysqld]节点下添加
#master的id
server-id=1
#binary log,开启binlong文件,并指定文件路径
log-bin="C:/Program Files/MySQL/data/mysql-bin"
#异常信息的日志
log-error="C:/Program Files/MySQL/data/mysql-error"
#Path to installation directory. All paths are usually resolved relative to this.
#MySQL根路径
basedir="C:/Program Files/MySQL/MySQL Server 5.5/"
#指定需要同步哪些数据库(默认全部数据库)
#binlog-do-bo=mydb01
#指定需要 不同步哪些数据库(排除)
#binlog-ignore-db=mysql
?授权从数据库
#授权IP为192.168.1开头的账号为root,密码为root作为我的从计算机
GRANT REPLICATION slave,reload,super ON *.* to 'root'@' 192.168.1.%' identified by 'root';
#刷新使其立刻生效
flush privileges;
?查看主数据库的状态 ? ? ? ? file:同步的二进制文件 ? ? ? ? position:二进制文件记录的位置 ? ? ? ? binlog_ignore_db:忽略的数据库 ? ? ? ? binlog_do_db:需要同步的数据库
?
?从库的配置
????????my.cnf文件配置
#从库的id,需要在集群中唯一,代表身份
server-id=2
#开启binlong文件
log-bin=mysql-bin
#需要同步的数据库
replicate-do-db=mydb01
在从库中指定主库
#在mysql客户端执行,查看server_id的值。
show variables like '%server_id%';
#配置server_id的值(有时候配置文件设置的server_id会不生效需要手动配置)
set global server_id=3;
下面的操作是为了确保server_id有被修改到,下面所有的start slave和stop slave都不要执行,这是我在实验的时候多操作了。
change master to
#主库的ip
master_host='192.168.1.5',
#主库的用户名
master_user='root',
#主库的密码
master_password='root',
master_port=3306,
#主库的binlog日志
master_log_file='mysql-bin.000001',
#主库的binlog日志的记录位置
master_log_pos=13061;
#执行完上面这些在开启slave服务
#开启从服务
start slave;
#查看主从同步信息
show slave status \G
?
?
?
?
?
|