本文共 2251 字,大约阅读时间需要 7 分钟。
写操作时单个数据库操作 1.请求到达数据库程序——写到事务日志中 2.程序读取事务日志——内存,在内存中运行完毕 3.将内存中有关数据的操作——写到二进制日志 4.内存操作——二进制写完之后;通知客户端操作完成 5.(顺序写)将二进制日志的操作——定期刷到磁盘写操作时主从数据库操作 1.slave_I/O线程请求master二进制日志 2.master_dump线程读取二进制日志给slave_I/O线程 3.slave_I/O线程将接收到的二进制日志写到slave的relay_log(中继日志) 4.slave_sql线程将relay_log运行到内存、写到二进制日志、刷到磁盘
1.配置文件
vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 server_id=174 log_bin=/var/lib/mysql/log_bin skip-name-resolve [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid
2.mysql>命令配置
给slave服务器replication权限-创建有replication 权限用户 MariaDB [(none)]> grant replication slave,replication client on *.* to slave@'%' identified by 'slave_passwd';半同步设置 安装半同步_master模块 mysql>命令 install plugin rpl_semi_sync_master soname 'semisync_master.so'; 查看master半同步是否开启 MariaDB [(none)]> show global variables like 'rpl_semi%'; 开启master半同步 mysql>命令 set global rpl_semi_sync_master_enabled=1;
salve的server_id不同
vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 server_id=175 log_bin=/var/lib/mysql/log_bin relay_log=/var/lib/mysql/relay_log read_only=on log_slave_updates=1 replicate_ignore_db=db1 replicate_ignore_table=db2.table1,db2.table2 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid
使用master创建的repliction权限用户 change master to master_host='192.168.17.174', master_user='slave', master_password='slave_passwd', master_log_file='log_bin.000001',master_log_pos=412;开启I/O线程和sql线程 start slave;半同步设置 安装半同步_slave模块 install plugin rpl_semi_sync_slave soname'semisync_slave.so'; 查看master半同步是否开启 show global variables like 'rpl_semi%'; 开启slave半同步 set global rpl_semi_sync_slave_enabled=1;重启I/O线程和sql线程 先stop,再start stop slave; start slave;查看状态 查看从服务器状态 SHOW SLAVE STATUS\G 查看当前复制状态 show processlist \G