青岛网站建设技术托管,网站维护推广,义乌公司网站制作,怎么做网站怎么引入广告挣钱MySQL主从复制的优点包括#xff1a; 1、横向扩展解决方案 - 在多个从站之间分配负载以提高性能。在此环境中#xff0c;所有写入和更新都必须在主服务器上进行。但是#xff0c;读取可以在一个或多个从设备上进行。该模型可以提高写入性能#xff08;因为主设备专用于更新…MySQL主从复制的优点包括 1、横向扩展解决方案 - 在多个从站之间分配负载以提高性能。在此环境中所有写入和更新都必须在主服务器上进行。但是读取可以在一个或多个从设备上进行。该模型可以提高写入性能因为主设备专用于更新同时显着提高了越来越多的从设备的读取速度。 2、数据安全性 - 因为数据被复制到从站并且从站可以暂停复制过程所以可以在从站上运行备份服务而不会破坏相应的主数据。 3、分析 - 可以在主服务器上创建实时数据而信息分析可以在从服务器上进行而不会影响主服务器的性能。 4、备份 - 可以使用从服务器数据进行备份减轻主服务器的压力。 Replication的原理 原理 主服务器上面的任何修改都会保存在二进制日志 Bin-log日志 里面。 1、从库上面启动一个I/O线程5.5以后多线程连接到主服务器上面请求读取二进制Bin-log日志文件 2、把读取到的二进制日志写到本地的Realy-log中继日志里面 3、从服务器上面同时开启一个SQL线程读取Realy-log中继日志如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。 注前提是作为主服务器角色的数据库服务器必须开启二进制binlog日志 主库机无数据配置主从
主从同时操作
1.准备环境 #防火墙 selinux [rootm ~]# systemctl stop firewalld --now setenforce 0 # 修改主机名 [rootm ~]# hostnamectl set-hostname master # 固定IP [rootmaster ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic #静态ip DEFROUTEyes NAMEens33 DEVICEens33 ONBOOTyes #网卡开机自启 IPADDR110.12.155.112 #需要固定的ip地址 PREFIX24 #子网掩码 GATEWAY10.12.155.250 #网关 DNS1223.5.5.5 DNS2223.6.6.6 保存退出后重启网卡 [rootmaster ~]# systemctl restart network 注为防止配对成功以后ip地址改变出现连接问题 2.主机名解析 主机名解析 [rootmaster ~]# vim /etc/hosts #添加以下内容 10.12.155.112 master #主库机ip和主机名 10.12.155.113 slave #从库机ip和主机名 3.清理环境 # 清理系统数据库 [rootmaster ~]# yum -y erase rpm -qa | egrep mysql|mariadb [rootmaster ~]# rm -rf /etc/my* rm -rf /var/lib/mysql rm -rf /usr/bin/mysql # 检查一下 [[ ! -f /etc/my.cnf ]] [[ ! -d /var/lib/mysql ]] [[ ! -f /usr/bin/mysql ]] echo 环境已经清理完成 || echo 环境未清理 4.安装数据库 #1、yum安装 安装数据库步骤请看博主前面的文章 https://blog.csdn.net/yz2322944912/article/details/135071777?spm1001.2014.3001.5502 #2、启动数据库 [rootmaster ~]# systemctl start msyqld #3、修改密码 [rootmaster ~]# mysqladmin -uroot -pawk /temporary password/{p$NF}END{print p} /var/log/mysqld.log password 新密码 配置主库[master] #开启binlog [rootmaster ~]# mkdir -pv /data/ # 创建二进制日志文件的存储目录 [rootmaster ~]# chown mysql.mysql /data #改属主属组为mysql [rootmaster ~]# vim /etc/my.cnf #编辑mysql配置文件添加以下内容 server-id328 #id号可自定义 log-bin/data/mysql-bin #日志文件名可自定义 # 重启数据库 [rootmaster ~]# systemctl restart msyqld # 创建并授权一个账号 mysql grant replication slave on *.* to 账号名授权网段或ip identified by 账号的密码; mysql flush privileges; # 查看当前binlog日志文件以及pos位置点 mysql show master status\G *************************** 1. row *************************** File: mysql-bin.000001 Position: 606 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec) 配置从库[slave] #编辑mysql配置文件添加server-id [rootslavr ~]# vim /etc/my.cnf server-id329 # 重启数据库 [rootslavr ~]# systemctl restart msyqld #登录数据库后执行 mysql ? change master to #查找需要插入的配置主从信息模板 #模板如下 修改配置信息后并执行 mysql CHANGE MASTER TO MASTER_HOSTmaster, MASTER_USER账号名, MASTER_PASSWORD账号的密码, MASTER_PORT3306, MASTER_LOG_FILEmysql-bin.000001, MASTER_LOG_POS606, MASTER_CONNECT_RETRY10; 默认为图 # 启动slave mysql start slave; # 查看主从状态 mysql show slave status\G 主从状态显示 mysql show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: masterMaster_User: relicationMaster_Port: 3306Connect_Retry: 10Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 154Relay_Log_File: slave-relay-bin.000002Relay_Log_Pos: 320Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 154Relay_Log_Space: 527Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 203Master_UUID: 6f6d0551-a073-11ee-9f28-000c298a6e96Master_Info_File: /var/lib/mysql/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version:
1 row in set (0.00 sec) 需注意 ## 14 15行 两个YES表示主从成功 ## 关注39-42的信息 ## 38行表示主从复制延迟时间 ## 46行主库mysqlUUID要和从库mysql的UUID不一致 如有问题要重新配置主从 #首先关闭线程服务 mysqlstop slave; #重新修改配置主从信息 mysql reset slave; mysqlCHANGE MASTER TO MASTER_HOSTmaster, MASTER_USERrelication, MASTER_PASSWORDQianfeng123, MASTER_PORT3306, MASTER_LOG_FILEmysql-bin.000001, MASTER_LOG_POS154, MASTER_CONNECT_RETRY10; # 启动slave mysqlstart slave; #继续查看主从状态 直到成功 mysql show slave status\G 主库机有数据配置主从
配置主库[master] #创建授权账号 mysql grant replication slave on *.* to 账号名授权网段或ip identified by 账号的密码; #刷新数据库生效 mysqlflush privileges; # 创建必要目录 [rootmaster ~]# mkdir /data [rootmaster ~]# chown mysql.mysql /data # 修改配置文件 [rootmaster ~]# vim /etc/my.cnf server-id 328 log-bin /data/mysql-bin # 重启数据库 [rootmaster ~]# systemctl restart mysqld 进入数据库并且锁表备份重点 锁表备份 mysqlflush tables with read lock; #新开一个终端备份全库 [rootmaster ~]# mysqldump -uroot -p密码 -A | gzip all.sql.gz #将备份好的全库文件压缩包远程拷贝至从库 [rootmaster ~]# scp all.sql.gz slave:需要存放的位置 #返回登录mysql的终端查看二进制日志文件以及位置点信息 mysqlshow master status\G *************************** 1. row *************************** File: mysql-bin.000001 Position: 1205 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec) 配置从库[slave] #导入主库备份的数据全库 [rootslave ~]# mysql -uroot -p密码 all.sql #配置主从 [rootslave ~]# vim /etc/my.cnf server-id 329 # 重启数据库 [rootslave ~]# systemctl restart mysqld 修改主从配置信息并执行 mysqlchange master to master_hostmaster, master_userreplication, master_passwordAa123456, master_port3306, master_log_filemysql-bin.000001, master_log_pos1250; #启动slave mysqlstart slave; # 查看主从状态
mysql show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: masterMaster_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 154Relay_Log_File: slave-relay-bin.000002Relay_Log_Pos: 320Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 154Relay_Log_Space: 527Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 203Master_UUID: 5aad69d6-a09e-11ee-b909-000c298a6e96Master_Info_File: /var/lib/mysql/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 主库解锁 mysql unlock tables; 或者 直接退出mysql数据库自动解锁 还可以通过打开gtid配置主从,但是太鸡肋了不建议使用 感谢观看希望能够帮助到大家