1.从单机到集群
一方面 提升我们的容量,另一方面降低单个MySql数据库的读写压力,第三个提升我们整个数据库的可用性
mysql主库master 其他的可以看作是从节点slave,增删改都会落到binlog文件中,slave连接到master上订阅,拉去binlog数据,通过I/O线程转换成本地的relay log
mysqlbinlog -vv 这条命令可以查看binlog里的文件里面的内容到底是什么。
2, mySQL主从复制
在我们现代意义下的分布式系统所有的节点都是对等的
每个节点都可以是主节点
可以配置成单主的模式也可以配置成多主的模式
certify是验证阶段,在这个验证的阶段去协调去看多个节点,去协调,让先相当于拿到操作拿到锁,拿到冲突之前的资源的这样的一个节点去处理,其他节点都不行,大家就回退回去,通过中间这个验证过程来避免并发的冲突,这样的话就可以对于所有的着这种写入操作。不管发生在哪个主上哪个节点上,都可以在中间验证这个阶段,就可以保证了大家是可以达成一致的,然后执行自己的提交或者在这个过程中,比如说这个事务发生在我们的第一个节点上
初始化和启动数据库
1,复制my.ini到指定文件夹
- 创建data文件夹
3.空数据库需要执行mysqld --defaults-file-my.ini initialize-insecure进行初始化
mysqld它是MySQL Server 进程的或者程序运行的名字
--defaults-file 就可以指定Mysql数据库服务器使用这个配置文件来启动或者初始化
initialize-insecure 可以非安全的表示root账号密码可以为空
创建用户授权和刷新权限
mysql> show master status;
+----------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------------+----------+--------------+------------------+-------------------+
| DESKTOP-0SM733V-bin.000004 | 856 | | | |
+----------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
从库连接主库
主从失败,需要使用mysql的native的这种password的方式
完成主从配置
当我们不想从库执行同样的命令的时候
我们就可以set SQL_LOG_BIN等于0先执行这么一句(相当于暂时关闭binlog)