首页 文章 精选 留言 我的

精选列表

搜索[AI运维],共10000篇文章
优秀的个人博客,低调大师

mysql 自动检查并启动slave 线程的小方法,提高运维效率

问题 某些公司数据库架构是两主多从,双活跨IDC机房,这样就存在一个问题。跨机房的数据库同步,必然会 存在网络抖动,异常引起的slave io,slave sql线程关闭的情况。 2.解决的思虑 1)写一个脚本定时监控slave 状态 2)使用shell 写就可以 3)使用crontab 每分钟检查,判断,然后根据判断执行start slave 就可以了。 具体的写法,需要大家自己动手来写了,只有这样才能有提升。 知识点 1)crontab 用法,每多少分钟检查一次 2) shell if [] then 判断即可完成。 本文转自 roidba 51CTO博客,原文链接:http://blog.51cto.com/roidba/1887163,如需转载请自行联系原作者

优秀的个人博客,低调大师

马哥2016全新Linux+Python高端运维班第五周作业

1、显示当前系统上root、fedore或user1用户的默认shell; 系统中没有fedore和user1用户,所以先创建 如下图所示,列出用户的默认shell,用egrep过滤出用户的默认shell 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(); 3、使用echo命令输出一个绝对路径,使用grep取出其基名; 扩展:取出其路径名 4、找出ifconfig命令结果中的1-255之间数字; 5、挑战题:写一个模式,能匹配合理的IP地址; A类地址范围:1.0.0.1—126.255.255.254B类地址范围:128.0.0.1—191.255.255.254 C类地址范围:192.0.0.1—223.255.255.254D类地址范围:224.0.0.1—239.255.255.254 E类地址范围:240.0.0.1—255.255.255.254127.X.X.X是保留地址,用做循环测试用的 匹配范围为1-255.0-255.0-255.1-254 6、挑战题:写一个模式,能匹配出所有的邮件地址; 先创建邮箱地址 7、查找/var目录下属主为root,且属组为mail的所有文件或目录; #find/var-userroot-groupmail-ls 8、查找当前系统上没有属主或属组的文件; 新建几个,效果明显 进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录; 9、查找/etc目录下所有用户都有写权限的文件; #find/etc/-perm-222 -ls | head 10、查找/etc目录下大于1M,且类型为普通文件的所有文件; #find/etc/-size+1M-typef -ls 11、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;#find/etc/init.d-perm-113-ls 12、查找/usr目录下不属于root、bin或hadoop的文件; #find/usr!\(-userroot-o-userbin-o-userhadoop\) 13、查找/etc/目录下至少有一类用户没有写权限的文件; find/etc!-perm-222 -ls | head 14、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文 #find/etc-mtime-7!\(-userroot-o-userhadoop\) 本文转自xinrenbaodao 51CTO博客,原文链接:http://blog.51cto.com/11832904/1846181,如需转载请自行联系原作者

优秀的个人博客,低调大师

运维自动化之ansible playbook一键化安装mysql主从

今天qq群里有朋友讨论使用ansible创建mysql主从的问题,正好我公司之前有需求,我就写了这个模块,现在分享给大家。 一、各软件版本 1、docker版本 1 2 3 4 5 6 7 8 9 Clientversion:1.3.2 ClientAPIversion:1.15 Goversion(client):go1.3.3 Gitcommit(client):39fa2fa /1 .3.2 OS /Arch (client):linux /amd64 Serverversion:1.3.2 ServerAPIversion:1.15 Goversion(server):go1.3.3 Gitcommit(server):39fa2fa /1 .3.2 2、docker存储 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Containers:2 Images:4 StorageDriver:devicemapper PoolName:docker-253:1-1430610-pool PoolBlocksize:65.54kB Data file : /var/lib/docker/devicemapper/devicemapper/data Metadata file : /var/lib/docker/devicemapper/devicemapper/metadata DataSpaceUsed:9.855GB DataSpaceTotal:107.4GB MetadataSpaceUsed:6.095MB MetadataSpaceTotal:2.147GB LibraryVersion:1.02.84-RHEL7(2014-03-26) ExecutionDriver:native-0.2 KernelVersion:3.18.3-1.el7.elrepo.x86_64 OperatingSystem:CentOSLinux7(Core) 二、docker方面 1、新建立2个容器test1(mysql master)与test2(mysql slave) 1 2 3 4 5 6 7 8 [root@docker-test3~] #shcreate_docker_container_use_static_ip.shtest1docker.ops-chukong.com:5000/centos6-http:new/usr/bin/supervisord10 { 'Physics_ip' : '10.10.17.3' , 'Container_name' : 'test1' , 'Container_ip' : '172.16.1.2/24' , 'Container_vlan' : '10' , 'Container_vlan_gateway' : '172.16.1.1/24' , 'Container_create' : '2015-03-0514:49:19' , 'Container_status' : 'running' } [root@docker-test3~] #shcreate_docker_container_use_static_ip.shtest2docker.ops-chukong.com:5000/centos6-http:new/usr/bin/supervisord10 { 'Physics_ip' : '10.10.17.3' , 'Container_name' : 'test2' , 'Container_ip' : '172.16.1.3/24' , 'Container_vlan' : '10' , 'Container_vlan_gateway' : '172.16.1.1/24' , 'Container_create' : '2015-03-0514:49:39' , 'Container_status' : 'running' } [root@docker-test3~] #dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 36b3b3643097docker.ops-chukong.com:5000 /centos6-http :new" /usr/bin/supervisor AboutaminuteagoUpAboutaminutetest2 90f8ffc29d41docker.ops-chukong.com:5000 /centos6-http :new" /usr/bin/supervisor AboutaminuteagoUpAboutaminutetest1 已经创建了2个实例,test1的ip是172.16.1.2,test2的ip是172.16.1.3 使用这个创建是使用了持久化固定ip原因,各位使用其他方式创建也可以。 宿主机的ip是10.10.17.3 三、ansible方面 1、添加路由 在ansible里添加一条到这个主机的路由,方便直接ansible对容器的ip进行部署mysql 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@puppetansible] #routeadd-net172.16.0.0netmask255.255.0.0gw10.10.17.3 ping 那2个容器ip [root@puppetansible] #ping-c2172.16.1.2 PING172.16.1.2(172.16.1.2)56(84)bytesofdata. 64bytesfrom172.16.1.2:icmp_seq=1ttl=63 time =0.846ms 64bytesfrom172.16.1.2:icmp_seq=2ttl=63 time =0.121ms ---172.16.1.2 ping statistics--- 2packetstransmitted,2received,0%packetloss, time 1001ms rttmin /avg/max/mdev =0.121 /0 .483 /0 .846 /0 .363ms Youhavemail in /var/spool/mail/root [root@puppetansible] #ping-c2172.16.1.3 PING172.16.1.3(172.16.1.3)56(84)bytesofdata. 64bytesfrom172.16.1.3:icmp_seq=1ttl=63 time =0.672ms 64bytesfrom172.16.1.3:icmp_seq=2ttl=63 time =0.111ms ---172.16.1.3 ping statistics--- 2packetstransmitted,2received,0%packetloss, time 999ms rttmin /avg/max/mdev =0.111 /0 .391 /0 .672 /0 .281ms 可以看到通了,把这2个ip放到ansible的hosts里 2、添加hosts 1 2 3 4 [root@puppetansible] #tail-n3/etc/ansible/hosts [container_mysql] 172.16.1.2:22 172.16.1.3:22 3、使用ansible部署mysql A、部署mysql master,在test1节点部署 1 time ansible-playbookmysql_master_install.yml--extra-vars "host=172.16.1.2user=rootmysql_slave_ip=172.16.1.3" -k mysql_slave_ip是从库的ip,弄这个是在master里给slave进行账号授权 下面开始部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 root@puppetansible] #timeansible-playbookmysql_master_install.yml--extra-vars"host=172.16.1.2user=rootmysql_slave_ip=172.16.1.3"-k SSHpassword: PLAY[172.16.1.2]************************************************************* GATHERINGFACTS*************************************************************** ok:[172.16.1.2] TASK:[common|Installinitializtionrequiresoftware]*********************** changed:[172.16.1.2] TASK:[mysql_master_install|CopyMysqlSoftwareToRedhatClient]*********** changed:[172.16.1.2] TASK:[mysql_master_install|CreateMysqlUserInRedhatClient]************* changed:[172.16.1.2] TASK:[mysql_master_install|CopyMysqlStartScriptToRedhatClient]******* changed:[172.16.1.2] TASK:[mysql_master_install|CopyInstallMysqlScriptToRedhatClient]**** changed:[172.16.1.2] TASK:[mysql_master_install|CopyMysqlConfigToRedhatClient]************* changed:[172.16.1.2] TASK:[mysql_master_install|CopyMysqlSecurityScriptToRedhatClient]**** changed:[172.16.1.2] TASK:[mysql_master_install|CreateMysqlInstallDir]*********************** ok:[172.16.1.2] TASK:[mysql_master_install|UncompressionMysqlSoftwareToRedhatClient]*** changed:[172.16.1.2] TASK:[mysql_master_install|ModifyMysqlDirPermissionInRedhatClient]*** ok:[172.16.1.2]=>(item= /data/mysql/datadir ) ok:[172.16.1.2]=>(item= /data/mysql/basedir ) TASK:[mysql_master_install|InstallMysqlScriptInRedhatClient]********** changed:[172.16.1.2] TASK:[mysql_master_install|WaitUntilsMysqlServiceAvaiableInRedhatClient]*** changed:[172.16.1.2] TASK:[mysql_master_install|StartMyqlSecurityScriptInRedhatClient]**** changed:[172.16.1.2] TASK:[mysql_master_install|AddBootStartMysqlServiceInRedhatClient]*** changed:[172.16.1.2] TASK:[mysql_master_install|CopyMysqlCreateSlaveScriptToRedhatClient]*** changed:[172.16.1.2] TASK:[mysql_master_install|CreateMysqlMasterAndSlaveInredhatClient]*** changed:[172.16.1.2] TASK:[mysql_master_install|DeleteCreateMysqlMasterAndSlaveScriptInredhatClient]*** changed:[172.16.1.2] TASK:[mysql_master_install|DeleteMysqlcompressionSoftwareInRedhatClient]*** changed:[172.16.1.2] PLAYRECAP******************************************************************** 172.16.1.2:ok=19changed=16unreachable=0failed=0 real 3m2.646s user 0m14.250s sys 0m0.854s 可以看到3分钟部署完成,最浪费时间的是yum安装基础库 现在去test1里查看 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [root@puppetansible] #ssh172.16.1.2 root@172.16.1.2'spassword: Lastlogin:MonNov1714:10:392014from172.17.42.1 root@b8d17d0f3941:~ 15:02:39 #netstat-tlnp ActiveInternetconnections(onlyservers) ProtoRecv-QSend-QLocalAddressForeignAddressStatePID /Program name tcp00172.16.1.2:33060.0.0.0:*LISTEN- tcp000.0.0.0:220.0.0.0:*LISTEN8 /sshd tcp00:::80:::*LISTEN14 /httpd tcp00:::22:::*LISTEN8 /sshd root@b8d17d0f3941:~ root@b8d17d0f3941:~ 15:03:12 #mysql-h172.16.1.2-uroot-p Enterpassword: WelcometotheMySQLmonitor.Commandsendwith;or\g. YourMySQLconnection id is12 Serverversion:5.5.21-logSourcedistribution Copyright(c)2000,2011,Oracleand /or itsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand /or its affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type 'help;' or '\h' for help.Type '\c' to clear thecurrentinputstatement. mysql>showdatabases; +--------------------+ |Database| +--------------------+ |information_schema| |mysql| |performance_schema| +--------------------+ 3rows in set (0.00sec) mysql>usemysql Readingtableinformation for completionoftableandcolumnnames Youcanturnoffthisfeaturetogetaquickerstartupwith-A Databasechanged mysql> select host,user,passwordfromuser; +------------+--------+-------------------------------------------+ |host|user|password| +------------+--------+-------------------------------------------+ |localhost|root|*BE78618CBAFFF409CE17D81579C1678B94439BE1| |172.16.1.3|root|*BE78618CBAFFF409CE17D81579C1678B94439BE1| |172.16.1.2|root|*BE78618CBAFFF409CE17D81579C1678B94439BE1| |%|zabbix|*DEEF4D7D88CD046ECA02A80393B7780A63E7E789| +------------+--------+-------------------------------------------+ 4rows in set (0.00sec) mysql> 可以看到数据库部署成功,并已经给予slave授予了权限。 B、部署从库 在test2节点部署 1 time ansible-playbookmysql_slave_install.yml--extra-vars "host=172.16.1.3user=rootmysql_master_ip=172.16.1.2mysql_master_port=3306mysql_master_user=rootmysql_master_passwd=E4yR3WnoluSFTCBAI" -k mysql_master_ip是mysql master的ip mysql_master_port是mysql master的mysql端口 mysql_master_user是mysql master的mysql用户 mysql_master_passwd是mysql 的密码 如果你使用我模块部署mysql的master了,直接运行命令就行,如果没有,只想单独弄个从库,主库不弄,那么第一步创建mysql master就不需要,只需要你在mater里授予slave的权限,然后运行mysql slave的模块就行 下面是运行情况 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 [root@puppetansible] #timeansible-playbookmysql_slave_install.yml--extra-vars"host=172.16.1.3user=rootmysql_master_ip=172.16.1.2mysql_master_port=3306mysql_master_user=rootmysql_master_passwd=E4yR3WnoluSFTCBAI"-k SSHpassword: PLAY[172.16.1.3]************************************************************* GATHERINGFACTS*************************************************************** ok:[172.16.1.3] TASK:[common|Installinitializtionrequiresoftware]*********************** changed:[172.16.1.3] TASK:[mysql_slave_install|CopyMysqlSoftwareToRedhatClient]************ changed:[172.16.1.3] TASK:[mysql_slave_install|CreateMysqlUserInRedhatClient]************** changed:[172.16.1.3] TASK:[mysql_slave_install|CopyMysqlStartScriptToRedhatClient]******** changed:[172.16.1.3] TASK:[mysql_slave_install|CopyInstallMysqlScriptToRedhatClient]***** changed:[172.16.1.3] TASK:[mysql_slave_install|CopyMysqlConfigToRedhatClient]************** changed:[172.16.1.3] TASK:[mysql_slave_install|CopyMysqlSecurityScriptToRedhatClient]***** changed:[172.16.1.3] TASK:[mysql_slave_install|CreateMysqlInstallDir]************************ ok:[172.16.1.3] TASK:[mysql_slave_install|UncompressionMysqlSoftwareToRedhatClient]*** changed:[172.16.1.3] TASK:[mysql_slave_install|ModifyMysqlDirPermissionInRedhatClient]**** ok:[172.16.1.3]=>(item= /data/mysql/datadir ) ok:[172.16.1.3]=>(item= /data/mysql/basedir ) TASK:[mysql_slave_install|InstallMysqlScriptInRedhatClient]*********** changed:[172.16.1.3] TASK:[mysql_slave_install|WaitUntilsMysqlServiceAvaiableInRedhatClient]*** changed:[172.16.1.3] TASK:[mysql_slave_install|StartMyqlSecurityScriptInRedhatClient]***** changed:[172.16.1.3] TASK:[mysql_slave_install|AddBootStartMysqlServiceInRedhatClient]*** changed:[172.16.1.3] TASK:[mysql_slave_install|CopyMysqlCreateSlaveScriptToRedhatClient]*** changed:[172.16.1.3] TASK:[mysql_slave_install|CreateMysqlMasterAndSlaveInredhatClient]*** changed:[172.16.1.3] TASK:[mysql_slave_install|DeleteCreateMysqlMasterAndSlaveScriptInredhatClient]*** changed:[172.16.1.3] TASK:[mysql_slave_install|DeleteMysqlcompressionSoftwareInRedhatClient]*** changed:[172.16.1.3] PLAYRECAP******************************************************************** 172.16.1.3:ok=19changed=16unreachable=0failed=0 real 2m59.966s user 0m14.413s sys 0m0.987s 部署完成,下面测试一下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 15:26:22 #netstat-tlnp ActiveInternetconnections(onlyservers) ProtoRecv-QSend-QLocalAddressForeignAddressStatePID /Program name tcp00172.16.1.3:33060.0.0.0:*LISTEN- tcp000.0.0.0:220.0.0.0:*LISTEN8 /sshd tcp00:::80:::*LISTEN14 /httpd tcp00:::22:::*LISTEN8 /sshd root@4ac2891ba3fd:~ 15:26:27 #mysql-h172.16.1.3-uroot-p Enterpassword: WelcometotheMySQLmonitor.Commandsendwith;or\g. YourMySQLconnection id is16 Serverversion:5.5.21-logSourcedistribution Copyright(c)2000,2011,Oracleand /or itsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand /or its affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type 'help;' or '\h' for help.Type '\c' to clear thecurrentinputstatement. mysql>showdatabases; +--------------------+ |Database| +--------------------+ |information_schema| |mysql| |performance_schema| +--------------------+ 3rows in set (0.01sec) mysql>showprocesslist; +----+-------------+------------------+------+---------+------+-----------------------------------------------------------------------------+------------------+-----------+---------------+-----------+ |Id|User|Host|db|Command|Time|State|Info|Rows_sent|Rows_examined|Rows_read| +----+-------------+------------------+------+---------+------+-----------------------------------------------------------------------------+------------------+-----------+---------------+-----------+ |11|systemuser||NULL|Connect|192|Waiting for mastertosendevent|NULL|0|0|1| |12|systemuser||NULL|Connect|192|Slavehas read allrelaylog;waiting for theslaveI /O threadtoupdateit|NULL|0|0|1| |14|root|172.16.1.3:53445|NULL|Query|0|NULL|showprocesslist|0|0|4| +----+-------------+------------------+------+---------+------+-----------------------------------------------------------------------------+------------------+-----------+---------------+-----------+ 3rows in set (0.00sec) mysql>showslavestatus\G ***************************1.row*************************** Slave_IO_State:Waiting for mastertosendevent Master_Host:172.16.1.2 Master_User:mysql_sync Master_Port:3306 Connect_Retry:60 Master_Log_File:mysql-bin.000003 Read_Master_Log_Pos:1663 Relay_Log_File:mysql-relay-bin.000002 Relay_Log_Pos:253 Relay_Master_Log_File:mysql-bin.000003 Slave_IO_Running:Yes Slave_SQL_Running:Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno:0 Last_Error: Skip_Counter:0 Exec_Master_Log_Pos:1663 Relay_Log_Space:409 Until_Condition:None Until_Log_File: Until_Log_Pos:0 Master_SSL_Allowed:No Master_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:No Last_IO_Errno:0 Last_IO_Error: Last_SQL_Errno:0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id:2 1row in set (0.00sec) 可以看到从库数据库创建成功,并且主从(sql与i这2个状态也是yes)创建成功。 C、测试主从状态 在master里创建一个数据库mysql_master,并创建表test插入数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [root@puppetansible] #ssh172.16.1.2 root@172.16.1.2'spassword: Lastlogin:ThuMar515:02:392015from10.10.11.125 root@b8d17d0f3941:~ 15:27:20 #mysql-h172.16.1.2-uroot-p Enterpassword: WelcometotheMySQLmonitor.Commandsendwith;or\g. YourMySQLconnection id is17 Serverversion:5.5.21-logSourcedistribution Copyright(c)2000,2011,Oracleand /or itsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand /or its affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type 'help;' or '\h' for help.Type '\c' to clear thecurrentinputstatement. mysql>createdatabasemysql_master; QueryOK,1rowaffected(0.00sec) mysql>usemysql_master Databasechanged mysql>createtable test ( id int,namevarchar(4)); QueryOK,0rowsaffected(0.03sec) mysql>desc test ; +-------+------------+------+-----+---------+-------+ |Field|Type|Null|Key|Default|Extra| +-------+------------+------+-----+---------+-------+ | id |int(11)|YES||NULL|| |name|varchar(4)|YES||NULL|| +-------+------------+------+-----+---------+-------+ 2rows in set (0.00sec) mysql>insertinto test value(1, 'test1' ); QueryOK,1rowaffected,1warning(0.00sec) mysql>insertinto test value(2, 'test2' ); QueryOK,1rowaffected,1warning(0.00sec) mysql> select *from test ; +------+------+ | id |name| +------+------+ |1| test | |2| test | +------+------+ 2rows in set (0.00sec) 然后去从库里查看 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [root@puppetansible] #ssh172.16.1.3 root@172.16.1.3'spassword: Lastlogin:ThuMar515:25:062015from10.10.11.125 root@4ac2891ba3fd:~ 15:31:05 #mysql-h172.16.1.3-uroot-p Enterpassword: WelcometotheMySQLmonitor.Commandsendwith;or\g. YourMySQLconnection id is17 Serverversion:5.5.21-logSourcedistribution Copyright(c)2000,2011,Oracleand /or itsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand /or its affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type 'help;' or '\h' for help.Type '\c' to clear thecurrentinputstatement. mysql>showdatabases; +--------------------+ |Database| +--------------------+ |information_schema| |mysql| |mysql_master| |performance_schema| +--------------------+ 4rows in set (0.00sec) mysql>usemysql_master Readingtableinformation for completionoftableandcolumnnames Youcanturnoffthisfeaturetogetaquickerstartupwith-A Databasechanged mysql>showtables; +------------------------+ |Tables_in_mysql_master| +------------------------+ | test | +------------------------+ 1row in set (0.00sec) mysql> select *from test ; +------+------+ | id |name| +------+------+ |1| test | |2| test | +------+------+ 2rows in set (0.00sec) 可以看到从库也同步了数据,mysql主从创建成功。 四、模块地址 mysql master 地址 1 https: //github .com /dl528888/ansible-examples/tree/master/mysql_master_install mysql slave地址 1 https: //github .com /dl528888/ansible-examples/tree/master/mysql_slave_install 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1617692 ,如需转载请自行联系原作者

优秀的个人博客,低调大师

运维专家:我在大数据项目中踩过的那些坑

一、主要讨论人员 提问:陈超,七牛云技术总监 回答:朱冠胤,百度资深大数据专家,连续两次百度最高奖得主。 二、引言 “坐而论道”是一个轮流问答的玩法。本文是大数据主题周中,几位国内一线专家激情问答的一部分内容。期间,各位群友也积极参与。 三、问题集锦 1.MongoDB在百度的使用场景及规模? 2.假设现在让你完全主导一个类似Hadoop的项目,你会选择哪种语言? 3.分享你在百度各种大数据项目中踩过的坑? 4.你所在团队在自研和使用开源方案的主要考虑因素? 5.新一代分布式数据库(NewSQL,类似Spanner)是一个好的创业方向吗? 四、精彩回答 问:我们都知道你深度参与了百度多个成功的大数据项目,你是否可以分享下这个过程中踩过的典型的坑? 答:主要包括如下这些: 1.避免过度设计;有些问题考虑太早没用;快速迭代,小步快跑! 2.防御性编程,认为一切都是不靠谱的(同时避免走向1的极端,例如离线系统,就不要考虑跨IDC高可用了)。 3.很多工作尽可能量化(能量化最好先量化);if you can’t measure it,you can’t improve it! 4.对外接口一定要慎重,不要轻易变动,兼容性尤其重要。 5.做好各种预案、监控,出现异常能快速定位是系统上游还是本系统还是系统下游的问题。 6.提供好架构和机制,让业务方去调整配置各种策略。 7.将例行手工劳动自动化,人是不靠谱的;不要相信系统是万能的,要有例行check机制。 其他Tips: 1.严格遵守编码规范。 2.采用最严格的编译选项。 3.做好CodeReview。 问:假设现在让你完全主导一个类似Hadoop的项目,你会选择哪种语言?(不考虑团队,仅从语言层面出发) 答:类似Hadoop的项目:如果想开源,并且让业界更多人参与进来,首选Java;Hadoop能取得巨大成功,我个人认为这与它选择Java有很大关系。 相反,Storm选择了一个比较小众的语言Clojure,我听到的一些消息,twitter重写Storm其中一个原因就是,精通Clojure的程序员比较难招,开源社区很多人也参与不进来,项目本身的活跃度也会受影响。 一个完整系统,要考虑项目推广(业务方接受程度)、项目开发、调试和维护成本,最后是性能。 拿Hadoop来说,接口层面需要支持Python、Php;如果是百度内部业务,还需要支持C++;如果是开放云对外服务,必须支持Java(对内则不用考虑,很少业务使用Java开发)。 对性能要求较高的部分,会考虑用C++;例如向量计算,会考虑SSE向量化,或一些业界成熟的高性能库,甚至会考虑GPU或FPGA实现。 除了这两部分,就考虑公司通用基础服务,尽量减少重复造轮子,多利用程序的基础库,例如序列化、rpc实现支持情况等,结合百度情况,会优先考虑C++。 问:面对众多开源解决方案,你所在团队在自研和使用开源方案的主要考虑因素有哪些? 答:1.首先搞清楚究竟想解决什么业务场景的问题,包括已明确需求和潜在需求。 2.优先并充分调研业界已有实现(论文、代码、论文活跃度和主要committer交流等),要想清楚该系统试图解决的业务场景是否是我们准备解决的;该方案在业界有哪些公司在站台(争取拿到一些内部消息),构造一定规模测试,内部组织分享调研成果。 3.该方案是否能hold住(从设计理念到代码级深度理解),是否容易维护(选择了Clojure估计难度不是一点半点),是否容易推广(看业务方对它的接受程度)。 4.如果上述3个都回答了,且答案是yes,此时看看该系统的论文(或原理)。和论文(或原理)对比,假设论文没有缺陷且能很好覆盖典型业务场景,则看该系统对论文的实现情况,是否有重大缺陷,如果有,一票否决;如果没有,不犹豫,选它好了:) 5.能达到这点的不多,所以很多项目都自研了...... 问:请说一下MongoDB在百度的使用场景及规模。 答:MongoDB在百度比较小众,应用规模应该在百台量级,基础架构部对内不提供统一服务,都是各业务线自行维护。 百度开放云对外提供MongoDB,主要是在BAE(BaiduAppEngine)产品中提供共享模式的Mongo服务。 问:你觉得现在新一代分布式数据库(NewSQL,类似Spanner)是一个好的创业方向吗? 答:选择类Spanner系统来创业,注定不走寻常路,挑战极大。 首先,看该产品的受众,有这类需求的客户似乎都是大企业(一般用mysql就搞定了,需要拆到128个实例太少见了),银行、能源行业等,都是不差钱的主。 如果自己创业,即便做出来了,客户一般也基本不考虑,他们不会相信一个创业公司能提供这样的质量和服务能力。 其次,实现难度,实现Spanner的技术难度不小。 从我不专业的角度来看,类似RedShift的系统是个不错的创业方向,很多公司都有这类需求,目前业界缺乏很好的开源实现,而已有商业化实现成本都比较高。 作者:朱冠胤 来源:51CTO

优秀的个人博客,低调大师

新IT运维模式下,全栈溯源助你解应用性能监控难题

【51CTO.com原创稿件】2016年,Gartner对APM的定义将原来的五个维度定义修改成了三个维度,即:数字化体验监控(DEM),应用发现、追踪和诊断(ADTD),以及应用分析(AA)。此外,Garter还强调,最终用户的体验始终是APM最重要的任务,而APM的核心功能则是能够基于应用去做问题的发现与诊断。这一定义的改变,源于用户在新的IT形势下,对APM提出的新需求。 近年来,公有云和移动互联网的增长,推动了APM市场和技术的快速发展。然而,云计算、微服务和容器化让监控的数据呈海量增长,为APM的发展带来了挑战。微服务架构和容器化让应用更具灵活性、弹性和扩展性,但在提高应用效率的同时,也让应用的拓扑架构和通讯变得更复杂,更难监控。 与此同时,企业数字化转型规模在愈发扩大,各行业对性能监控提出了更高的要求,传统的监控方案只能定位解决不到30%的问题,剩下的70%该怎么办呢?如何才能快速定位最终用户关键业务的性能问题?怎样才能保障关键业务流程各方面的稳健运行? 为了能够帮助企业应对新IT形势下的应用性能监控方面的难题,帮助IT管理团队快速实现不同业务逻辑下的性能排障,国内应用性能管理服务提供商听云,于2016年推出了全栈溯源解决方案,它在国内首次实现了全端、跨应用监控。 2017年,面对现阶段复杂的全栈环境,定位问题变得更加复杂,为了能够对应用性能问题更加深入的追踪与诊断,听云全栈溯源进行了全面升级。此次升级主要是基于用户体验的性能监控升级,实现了工具产品平台化,为用户提供全面的听云全栈溯源解决方案。 据听云产品副总裁Moca介绍,所谓全栈溯源,就是从用户体验出发,基于事务请求进行全栈问题的定位追踪。目前,其涉及的主要功能有:APP端事务请求全栈溯源、浏览器页面事务请求全栈溯源、拨测事务请求全栈溯源、单用户全栈溯源。 “全栈溯源是全球APM行业的趋势。在国外,Dynatrace、AppDynamics这些老牌APM厂商已经将全栈溯源作为了产品的标配。但是,从功能上来说,听云的技术在国内是非常领先的。因为我们的服务体系更加符合国内企业的要求,国外的APM不支持国内组件,比如阿里云的基于微服务架构的支持,类似达梦数据库的国产化技术。” Moca说。 听云全栈溯源解决方案可以实现清晰责任界定为各部门提供统一的信息平台,共同讨论目前应用发生的问题,以及解决方案。基于客户关键业务的自动质量控制平台,将把以周为单位的解决问题时间缩短为几分钟。同时,当发生严重问题时,系统会进行自动响应,及时告警。 既然全栈溯源解决方案是从用户体验出发,听云是怎样来衡量用户体验的呢? Moca解释说,一方面,用户可以结合自身来定义用户体验问题,比如反应快慢时间。另一方面,听云全栈溯源解决方案设置了一个默认值。此外,在用户感知层面,针对首屏时间、点击控件时间等,系统会通过请求的关联,来发现是否是因为请求慢导致用户体验度低的问题。 那么,针对微服务架构和容器化等新技术,听云全栈溯源解决方案是否能够很好的解决应用性能监控的问题呢? 对此,Moca表示,简单来说,微服务就是把整个系统划分为多个细小的服务。以听云为例,听云服务器端整个监控系统,报表、数据库查询系统等,都可以拆分成一个个微服务。这里的挑战在于,以前我们很清楚是A、B、C应用组成了一个系统,而现在我们不知道A、B、C应用中的哪些微服务组成了一个系统。因为听云也在用微服务和容器,它们在带来灵活、可扩展性强等诸多好处的同时,也给业务管理带来很多的瓶颈,定位一个问题需要定位到某一个具体的微服务。如果是容器,则需要考虑映射到哪个主机等,这些都是听云正在努力的方向。 目前,听云全栈溯源解决方案已经支持容器。因为容器的核心就是可以动态扩展,动态扩展时会变成很多实例,此时就可以动态的根据这些实例去扩展。所以如果忽略容器这一层,把能具体定位到错误与容器和主机映射到一起,就可知道系统级别、基础架构下的哪里出现了哪些问题。然后定位到应用级别,再把应用拆开,就能找到这个应用具体映射到哪个容器和服务器,最终实现对应用性能的监控。 采访最后,Moca表示:“全栈溯源核心在于从用户体验出发,可以支持多种复杂的环境。客户无论使用怎样的生产环境,我们都能够给予支持。这是我们走向市场,成熟商业化的重要标准之一。今年,听云的重点是从用户体验出发,不断完善全栈溯源解决方案的功能,实现多种视角,使产品更加易用。” 作者:杜美洁 来源:51CTO

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册