mysqldb_slave.lua 955 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. local skynet = require "skynet"
  2. require "skynet.manager"
  3. local mysql = require "skynet.db.mysql"
  4. -- local sql_template = require "sql_template"
  5. local CMD = {}
  6. local db
  7. function CMD.start(conf)
  8. local function on_connect(db)
  9. db:query("set charset utf8mb4");
  10. end
  11. db = mysql.connect{
  12. host=conf.ip,
  13. port=conf.port,
  14. database=conf.db,
  15. user=conf.user,
  16. password=conf.password,
  17. charset="utf8mb4",
  18. max_packet_size = 1024 * 1024,
  19. on_connect = on_connect
  20. }
  21. if not db then
  22. error("mysql connect fail")
  23. end
  24. skynet.fork(function()
  25. while true do
  26. db:ping()
  27. skynet.sleep(300)
  28. end
  29. end)
  30. end
  31. function CMD.query(sql)
  32. return db:query(sql)
  33. end
  34. skynet.start(function()
  35. skynet.dispatch("lua", function(_, _, cmd, ...)
  36. local f = assert(CMD[cmd], cmd .. "not found")
  37. skynet.retpack(f(...))
  38. end)
  39. end)