1:添加阿里云安全组规则的MySQL 3306端口
2.:在MySQL用户表添加用户并将host设置未所有IP都能访问
登录:mysql -u root -h localhost -p
打开数据库:use mysql
通过select user,host from user查看用户名和登录所用的ip名(%表示当前用户所有ip都能登录,localhost表示只有本台主机才能登录这个用户)
可以给root用户设置为所有ip都可访问:
update user set host='%' where user='root' and host='localhost';
也可以添加所有IP都可以访问的用户:
grant all privileges on *.* to '用户名'@'%' identified by '密码' with grant option;
刷新权限:flush privileges;
注意:如果报错,可能防火墙没关
3.主从同步
1.master将改变的数 记录在本地的 二进制日志中(binary log) ;该过程 称之
为:二进制日志件事
2.slave将master的binary log拷贝到自己的 relay log(中继日志文件)中
3.中继日志事件,将数据读取到自己的数据库之中
MYSQL主从复制 是异步的,串行化的, 有延迟
注意:
1.认识同步和异步
2.串行化指并行事务执行结果和串行执行结果一致的保证
串行执行有以下特点:
a.每个事务需要短小快速,以防止阻塞其它所有事务;
b.写操作执行速度由cpu来决定,或者通过数据分片来提升多核
单机的并发能力;
c.如果执行了分片策略(几乎所有分布式数据存储都需要分
片),跨片的事务执行效率会很低;
master:slave = 1:n
4.配置:
windows(mysql: my.ini)
linux(mysql: my.cnf)
1,在win中
windows中的数据库 授权哪台计算机中的数据库 是自己的从数据库:
grant replication slave,reload,super on *.* to 'root'@'192.168.2.%' identified by 'root';
flush privileges ;
查看主数据库的状态(每次在左主从同步前,需要观察 主机状态的最新值)
show master status;
(mysql-bin.000001、 107) //如果没有显示,将服务重启一次
2.在linux中
a.在/etc/my.cnf中修改配置文件
[mysqld]
server-id=2
log-bin=mysql-bin
replicate-do-db=test
b.linux中的数据 授权哪台计算机中的数控 是自己的主计算机
CHANGE MASTER TO
MASTER_HOST ='ip地址',
MASTER_USER = '用户名',
MASTER_PASSWORD = '密码',
MASTER_PORT = 3306,
master_log_file='mysql-bin.000001',
master_log_pos=154;
如果报错:This operation cannot be performed with a running slave; run STOP SLAVE first 解决:STOP SLAVE ;
再次执行上条授权语句
c.start slove
d.检验 show slave status \G 主要观察: Slave_IO_Running和 Slave_SQL_Running,确保二者都 是yes;如果不都 是yes,则看下方的 Last_IO_Error。比如:server-id经常出错,可以set global server_id =2 ;
直接修改
e.在主数据库创建一个表和插入一条数据看看从数据库中有没有检查是否成功